02-26继承,多态,文件操作
继承
- 在程序中,继承描述的是多个类之间的所属关系。
- 如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里。
- 那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。
1 class Animal(object): 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 6 def sleep(self): 7 print(self.name + '正在睡觉') 8 9 10 class Dog(Animal): 11 def bark(self): 12 print(self.name + '正在叫') 13 14 15 class Student(Animal): 16 def study(self): 17 print(self.name + '正在好好学习') 18 19 20 # Dog() 调用 __new__ 方法,再调用 __init__ 方法 21 # Dog 里没有 __new__ 方法,会查看父类是否重写了 __new__ 方法 22 # 父类里也没有重写 __new__ 方法,查找父类的父类,找到了 object 23 24 # 调用 __init__ 方法,Dog类没有实现,会自动找 Animal 父类 25 d1 = Dog('大黄', 3) 26 print(d1.name) # 父类里定义的属性,子类可以直接使用 27 d1.sleep() # 父类的方法子类实例对象可以直接调用 28 d1.bark() 29 30 s1 = Student('小明', 18) 31 s1.sleep() 32 s1.study()
多继承时,当不同的父类拥有相同的方法时,子类调用时遵循深度优先,可以使用子类名.__mor__来查看顺序
多态
多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果
实现步骤:
- 定义父类,并提供公共方法
- 定义子类,并重写父类方法
- 传递子类对象给调用者,可以看到不同子类执行效果不同
文件操作
打开文件
open(文件路径,访问模式)
f = open('test.txt', 'w')
第一个参数为文件路径,第二个问打开方式,一般还会指定编码方式encoding(gbk, utf8等)。
绝对路径
C:/Users/chris/AppData/Local/Programs/Python/Python37/python.exe
,从电脑的盘符开始,表示的就是一个绝对路径。
相对路径
是从当前文件所在的文件夹开始的路径。如:demo/test.txt
,在当前文件夹里查找 demo
这个文件夹,并在这个文件夹里查找 test.txt
文件。
常见访问模式
r :以只读方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,则报错。这是默认模式。
w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
读取
f.readline
读取一行数据
f.readlines
按行读取数据,返回一个列表,每行元素是列表的一个元素。
文件指针
tell() 方法用来显示当前指针的位置,f.tell().
seek(offset,whence) 方法用来重新设定指针的位置。
- offset:表示偏移量
- whence:只能传入012中的一个数字。
- 0表示从文件头开始
- 1表示从当前位置开始
- 2 表示从文件的末尾开始