课程:Python面向对象
进度:day3
上次内容回顾
1. 多态
1)什么是多态:同一个方法,在不同
子类中有不同的表现
2)方法的重写来实现
3)保持程序的扩展性、灵活性
2. 面向对象的技术特性
1)构造方法与析构方法
a)构造:__init__()
调用时机:对象被创建时自动调用
作用:创建对象属性,并赋值
注意:子类构造方法显示调用父类构造
方法
b)析构方法:__del__()
调用时机:对象被销毁时调用
作用:对象销毁时执行清理操作
2)object类:所有类最终的父类
如果类定义时没有指定父类
默认从object中继承
__base__查看父类
3)super()和issubclass()函数
super(): 获得父类的绑定
两种格式:super() 只能在类方法中使用
super(type, obj) obj必须是type示例化的对象
issubclass():判断某个是不是另一个类的子类
格式:issubclass(cls, cls_or_tuple)
4)多重继承:一个类有多个父类
MRO: 方法解析顺序,__mro__
从下至上,从左至右
3. 函数重写:让对象操作更方便
1)对象转字符串函数
str(): __str__(),返回字符串给人阅读
repr():__repr__(),返回字符串给解释器阅读
2)内建函数
abs(): __abs__()
len(): __len__()
reversed(): __reversed()__
round():__round()__
3)数值转换函数
int(): __int__()
float(): __float__()
complex(): __complex__()
bool(): __bool__()
4. 属性操作函数
getattr(obj, name):获取对象属性
setattr(obj, name, value):设置某个属性值
hasattr(obj, name):判断对象有没有某个属性
delattr(obj, name):删除某个属性值
作业:见account.py
今天内容
1. 可迭代对象
1)什么是迭代器
2)代码特征:重写__iter__()方法返回可迭代对象
重写__next__()方法获取下一个元素
3)__next__()方法,实现迭代器协议
如果有下一个元素,则返回
如果没有下一个元素,抛出StopIteration异常
4)示例:见myiter.py
1 # myiter.py
2 # 通过函数重写,实现自定义迭代器
3 class MyIter:
4 #用列表初始化对象
5 def __init__(self, lst):
6 self.data = lst #lst是列表
7 self.cur_index = 0 #计数器
8
9 def __iter__(self):# 返回可迭代对象
10 return MyIter(self.data)
11
12 def __next__(self):# 获取下一个元素
13 if self.cur_index >= len(self.data):
14 raise StopIteration #抛出异常
15 else:
16 i = self.cur_index #记录计数器
17 self.cur_index += 1 #计数器加1
18 return self.data[i] #返回元素
19
20 if __name__ == "__main__":
21 myiter = MyIter(range(1,10))
22 for x in myiter:
23 print(x, end="")
24
myiter.py
2. 运算符重载
1)什么是运算重载:自定义类中,重写
某些方法,重写后就可以对对象进行
某些运算符操作