Python Metaclass __new__方法没有被调用

时间:2017-12-26 23:33:29

标签: python python-3.x operator-overloading metaclass

基于我有限的Python知识,Metaclass是另一个类。在下面的例子中,我只是在构建一个元类。在这里,我重载了__new__方法。 type.__new__()时我的期望是在课堂宣言结束时 被称为将委托给MyMeta.__new__()。但这从未发生过。

print('Building MetaOne')

class MyMeta(type):
      def __new__(meta, classname, supers, classdict):
          print('In MyMeta:', classname)

      def myfunc(self):
          print ('In myfunc')

此处来自MyMeta __new__()我看不到印刷品。

但恰恰相反,如果我现在使用MyMeta类作为另一个类的元类,如:

print('Building Another class')
class Super(metaclass = MyMeta):
      def myfunc(self):
          print ('In Super myfunc')

在本课程结束时,我看到MyMeta的__new__被调用。

有人可以帮我理解为什么会这样吗?

0 个答案:

没有答案