日常生活的交流与学习

首页 新随笔 联系 管理

魔法函数

魔术访达的一些说明

img

  1. 23-24

img
img

  1. 魔术方法并不是来自继承,而是python自带的这些方法,跟类没有关系

__getitem__方法

  1. 因为实现了__getitem__(),所以可以直接遍历这个student对象
    img

__getitem__方法的参数

img

  1. item就是相当于数组的下标
  2. 13行

对象实例化对象进行切片操作

img

  1. 21行,甚至可以对实例对象进行切片操作

__len__方法

img

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

img

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

__str__方法

img

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

__abs__方法

img

__add__方法

img

鸭子类型

img

  1. 53行和58行,Cat和Dog类都有say()方法

说明

img

  1. 48行,只关注方法的类型,不关注方法的实现,

遍历执行

img

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

extend扩展

img
img

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

抽象类的作用

img

  1. 25-26行,抽象类的作用

NotImplementedError

img

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

img

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

img

抽象基类的建议

img

  1. 127
  2. 尽量不去使用

img

  1. 128,129
  2. 尽量使用多继承和mixin代替抽象基类

isinstance和type的区别

isinstance

img

type

img

类变量

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

img

  1. 30-32

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

img

  1. 36

深层原理

img

  1. 38-39

多继承

深度优先

img

广度优先

img

mro

img

  1. 69,82
  2. 探索过__mro__可以查看多继承的查找顺序
posted on 2023-04-20 22:26  lazycookie  阅读(15)  评论(0编辑  收藏  举报