魔法函数
魔术访达的一些说明

- 23-24


- 魔术方法并不是来自继承,而是python自带的这些方法,跟类没有关系
__getitem__方法
- 因为实现了__getitem__(),所以可以直接遍历这个student对象

__getitem__方法的参数

- item就是相当于数组的下标
- 13行
对象实例化对象进行切片操作

- 21行,甚至可以对实例对象进行切片操作
__len__方法

- 25行,对实例对象使用len方法,报错,

- 需要在16-17行实现__len__方法
__str__方法

- 调用print打印实例化对象的时候,实际上调用的是改对象的__str__方法
__abs__方法

__add__方法

鸭子类型

- 53行和58行,Cat和Dog类都有say()方法
说明

- 48行,只关注方法的类型,不关注方法的实现,
遍历执行

- 76-78行,把各个对象都添加到一个列表当中,然后遍历执行
extend扩展


- 91-92行
- list也可以扩展map,因为extend的参数要求一个可迭代对象就是可以进行扩展
抽象类的作用

- 25-26行,抽象类的作用
NotImplementedError

- 87,90,
- 如果这个RedisCache继承了CacheBase,但是没有重写get和set方法,就回抛出异常,当然这里是我们手动抛出异常

@abc.abstractmethod注释,来声明抽象方法

抽象基类的建议

- 127
- 尽量不去使用

- 128,129
- 尽量使用多继承和mixin代替抽象基类
isinstance和type的区别
isinstance

type

类变量
类修改类变量,实例对象访问类变量

- 30-32
实例对象修改类变量,类访问类变量

- 36
深层原理

- 38-39
多继承
深度优先

广度优先

mro

- 69,82
- 探索过__mro__可以查看多继承的查找顺序
浙公网安备 33010602011771号