Python 元类 DEF
元类基础
Python 中一切事物都是类型的实例.
数值是数字类型的实例, 字符串是字符串类型的实例, 对象是类-类型的实例
同样的, 类(就是那个用 class
关键字创造出来的东西), 也是某种类型的实例
这种类型就叫元类
.
如果说类是创建对象的模板, 那么元类
就是创建类的模板
下面的代码就创建了一个名为 meta
的元类, 当然, 这个元类什么都没定义
当然, 元类的定义还有其它方法, 还请自行 Google
2.* 和 3.* 的坑
因为元类可能复用, 而要创建的类也会有一些自己的属性.
所以我们一般会这么写
但是这么写有一个问题 – 不兼容 3.*
在 3.*
中, 元类语法不是上面这个样子
而是:
而且, 两种写法完全不兼容(不像 print)
兼容写法
语法上不兼容就没撤了?
如果真要兼容 2.*
和 3.*
, 只能放弃 class
关键字, 直接使用 type 的返回值
有需要自定义的方法的情况, 将 type 的调用封装一下就可以了.