22.元类、静态鸭子类型、抽象基类
目录
1. 元类
1.1 当函数用:查看类型
1.2 当类用:动态造类(3 参数形式)
1.3 继承 type:写自己的元类
2. 用“鸭子类”进行类型推导
2.1 什么是鸭子类(Duck Class)?
2.2 最小例子:写下“鸭子长什么样”
2.3 带属性协议的鸭子(更真实)
2.4 运行时类型检查(可选)
2.5 与 ABC 对比(一张表)
3. 抽象基类
3.1 内置抽象基类
3.2 从抽象基类中派生
3.3 实现自定义抽象基类
3.4 Protocol + ABC 混用(静态鸭子 + 继承)
4. 总结
1. 元类
什么是元类,一句话:元类是 “类的类”,控制 “类对象” 的诞生过程,也是大型框架(Django、SQLAlchemy)保持简洁的底层支柱。
从“对象→类→元类”链条说起
实例 obj ──诞生于──→ 类 MyClass ──诞生于──→ 元类 MyMeta
-
类本身就是对象(类型为
type
或其子类) -
默认元类 =
type
;你可以 自定义元类 来干预“造类”过程。
1. 用类型(type)创造类
type
在 Python 里同时扮演两种角色:
-
内置函数:告诉你“对象是谁生的”
-
元类鼻祖:所有类的默认“生产线”,你可以继承它自己造元类。