84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
欢迎选择我的课程,让我们一起见证您的进步~~
metaclass必须要从type继承。上面的Model在Python2.7下有语法错误,在Python3中可以产生Model Class但无法进行实例话。在Python3中可以顺利产生Model Class的原因我猜想可能是 “object是type的基类”的原因。
改成这样,new方法里object改成type.
class BBB(type): def __new__(cls, name, bases, attrs): print("BBBBB") return type.__new__(cls, name, bases, attrs) class Model(): __metaclass__ = BBB
这是我修改过的代码:python2下通过
# coding=utf-8 class ModelMetaclass(type): def __new__(cls, name, bases, attrs): print("ainia") return type.__new__(cls, name, bases, attrs) class BBB(type): def __new__(cls, name, bases, attrs): print("BBBBB") return type.__new__(cls, name, bases, attrs) class Model: __metaclass__ = BBB class Model2: __metaclass__ = ModelMetaclass
关于python的元类解释,推荐你看一篇文章,讲解非常清楚,传送门: 深刻理解Python中的元类(metaclass)
metaclass必须要从type继承。上面的Model在Python2.7下有语法错误,在Python3中可以产生Model Class但无法进行实例话。在Python3中可以顺利产生Model Class的原因我猜想可能是 “object是type的基类”的原因。
改成这样,new方法里object改成type.
这是我修改过的代码:
python2下通过
关于python的元类解释,推荐你看一篇文章,讲解非常清楚,
传送门: 深刻理解Python中的元类(metaclass)