假设我有一个自定义元类和一个链接到它的类:
class Meta(type): pass
class A(metaclass=Meta): pass
Run Code Online (Sandbox Code Playgroud)
据我了解,在语句末尾class A,执行以下步骤:
Meta('A', (), {})。type.__call__(...)将被调用。这是因为type链接到了Meta.__class__.type.__call__(...)依次运行另外两个方法( a__new__和 a __init__)。Meta定义了这两个方法中的一个或两个,那么这些方法内部type.__call__将被调用为Meta.__new__(...)and/or Meta.__init__(...)。A已创建并链接到Meta( A.__class__)。现在,假设我有一个子类A:
class Meta(type): pass
class A(metaclass=Meta): pass
class B(A): pass
Run Code Online (Sandbox Code Playgroud)
在陈述的最后class B,下列步骤是否正确?
type('B', (), {})而不是Meta,因为B.__class__是type。type.__call__(...)它依次运行另外两个方法(__new__ …