您的位置:首页 > 编程语言 > Python开发

Python入门(六)——self,类,方法,__init__,类对象,类变量,文件操作,判断回文,pickle模块用法

2017-10-17 20:35 901 查看

一、self参数

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。虽然self可以改成其他名称,但是遵循惯例有利于程序的可读性

如果你的类方法中没有一个参数,你依旧必须拥有self参数!

class Test:
def prt(self):
print(self)
print(self.__class__)

t = Test()
t.prt()




从结果来看,可以看出,self代表的是类的实例,代表当前对象的地址(相当于C++的指针),self._ class_指向类,且self不是关键字。可以其他代替,但我上面说了,最好遵循惯例!

我下面对类解释的时候也会再解释self

二、类,方法,继承,_ init_方法,类变量,对象变量

1、类

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。



2、方法

就是类中的函数

3、继承

实现代码重用

4、_ init_方法

该方法会在类的对象实例化时立即执行

def __init__(self,name):
self.name=name
print('Robot name is {}'.format(self.name))


5、类变量

可以被属于该类的所有实例访问(公有),当然如果你想变成私有,在变量名前面加两个下划线如:__popo

6、对象变量

由类的每个独立的对象或实例所拥有

直接实例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/16

class Robot:
__population=0#类私有变量
def __init__(self,name):#init函数,初始化作用
self.name=name
print('Robot name is {}'.format(self.name))
Robot.__population+=1

def die(self):
print('The Robot was die')
Robot.__population-=1

def say_hi(self):
print('{} hello everyone'.format(self.name))

@classmethod #意为下面的方法为类方法,而不是对象的方法,调用是直接类名.函数名。为什么是类方法,其实看函数的作用就可以了
def how_many(cls):
print('Have {} Robots'.format(cls.__population))

class RobotChi(Robot):#继承了Robot类
def __init__(self,name,age):#初始化,这里显示调用了基类的构造函数,如果没有init方法,也会自动调用基类的构造函数
Robot.__init__(self,name)
self.age=age
self.name=name
print('RobotChi name is {}'.format(self.name))

def tell(self):
Robot.say_hi(self)
print('age:{}'.format(self.age))

def say_hi(self):
Robot.say_hi(self)
print('My name is: {}'.format(self.name))

man=Robot('xlj')#输出:Robot name is xlj
man.say_hi()#输出:xlj hello everyone
man.die()#输出:The Robot was die
Robot.how_many()#输出:Have 0 Robots

manChi=RobotChi('bubu',12)#输出:Robot name is bubu     Robot name is bubu
manChi.say_hi()#输出:bubu hello everyone   My name is: bubu
manChi.tell()#输出:bubu hello everyone    age:12


三、判断回文(输入输出基础)

#!/usr/bin/env python
# -
ca62
*- coding:utf-8 -*-
# author: xulinjie time:2017/10/17
def reverse(text):
return text[::-1]

def is_huiwen(text):
return text==reverse(text)

something=input('Enter text:')

if is_huiwen(something)==1:
print('yes')
else:
print('no')


四、文件操作





r:以读方式打开文件,可读取文件信息。

w:以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容

a:以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建

b:以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

r+:以读写模式打开

w+:以读写模式打开 (参见 w )

a+:以读写模式打开 (参见 a )

rb:以二进制读模式打开

wb:以二进制写模式打开 (参见 w )

ab:以二进制追加模式打开 (参见 a )

rb+:以二进制读写模式打开 (参见 r+ )

wb+:以二进制读写模式打开 (参见 w+ )

ab+:以二进制读写模式打开 (参见 a+ )

下面是一个小demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/17

poem="""\
This is my poem
I think this is very beautiful
hahag
"""

f=open(r'F:\1.txt','w')

f.write(poem)

f.close()

f=open(r'F:\1.txt')

while True:
line=f.readline()
if len(line)==0:
break
else:
print(line,end='')

f.close()




五、Pickle

Python中可以使用 pickle 模块将对象转化为文件保存在磁盘上,在需要的时候再读取并还原。具体用法如下

说的直白一点,就是一个存储和获取的工具,pickle把Python的数据结构用另外一种简单的形式存储到文件中,然后方便转移和传播,然后在用同一样的方法还原回去。依靠dump和load,可以轻松实现

pickle.dump(obj, file[, protocol])

序列化对象,并将结果数据流写入到文件对象中

pickle.load(file)

反序列化对象。将文件中的数据解析为一个Python对象(即读取数据)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/17
import pickle#导入pickle模块

shoplistfile='shoplist.data'

shoplist=['apple','mango','carror']

f=open(shoplistfile,'wb')#write(写入)+binary(二进制)

pickle.dump(shoplist,f)#pickle.dump(obj, file[, protocol])
f.close()

del shoplist#删除shoplist序列,此时其实已经将其中的内容存储了

f=open(shoplistfile,'rb')

list=pickle.load(f)#pickle.load(file)
print(list)


其实执行这段代码已经将shoplist中的数据保存到了shoplist.data中



输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: