Python基础温习-元类
什么是元类(metaclass)
1、先理解Python的对象模型
1 | class Person: |
Person是一个类,实际上,python认为类也是对象。
1 | class Person: |
输出:
1 | <class 'type'> |
Person这个类,也是由type创建出来的对象。
实例<–类<–元类
1 | class Person: |
关系如下:
1 | p |
也就是说:
p是Person的实例;
Person是type的实例;
验证:
1 | print(isinstance(p,Person)) #True |
type是什么
type()不只是查看类型,还第二个作用:动态创建类。
普通写法:
1 | class Person: |
完全等价于:
1 | def Hello(self): |
type (
类名,
父类,
属性字典
)
所以:type就是Python的默认的元类。
元类有什么用
最常见:自动修改类
1 | class MyMeta(type): |
以后:
1 | class Person(metaclass = MyMeta): |
自动拥有:
1 | print(Person.Version) |
输出:
1 | 1.0 |
什么时候会调用元类
1 | class MyMeta(type): |
使用:
1 | class Person(metaclass = MyMeta): |
输出:
1 | 创建类 |
注意:这里只输出一次,因为元类只在:class Person执行时运行。
以后Person()不会再调用元类。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Soul-king!

