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、类变量
可以被属于该类的所有实例访问(公有),当然如果你想变成私有,在变量名前面加两个下划线如:__popo6、对象变量
由类的每个独立的对象或实例所拥有直接实例:
#!/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中
输出:
相关文章推荐
- 从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- Python中shutil模块的常用文件操作函数用法示例
- python自学笔记(4)--Python文件对象、os模块及pickle
- python os模块常用操作文件目录方法
- Python入门的36个例子 之 28 -> Pickle —— 利用文件存储对象
- Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
- 从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
- Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)
- Python中shutil模块的常用文件操作函数用法示例
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- Python使用pickle模块储存对象操作示例
- Python学习笔记——文件对象和操作(2)
- Linux C编程--操作文件结束和错误的判断方法(函数)
- Python文件对象和操作
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- Python学习笔记——文件对象和操作(1)
- Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
- 类、对象、方法、super、self、init方法