我一直在探索Python黑魔法,并想请您帮我理解一些内容。假设有一个类
Foo
,我尝试从中继承,有以下几种方式:
class A(Foo)
— 可行,毫不意外class B(Foo())
— 在Foo
具有适当的__new__
方法的情况下可行(我已提供)class C(Foo(), Foo)
— 在与B
相同的条件下可行class D(Foo, Foo())
— 调用出现著名的元类错误:Traceback (most recent call last):
File "test.py", line 59, in
class D(Foo, Foo()):
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
(Foo(), Foo)
(实例第一,类第二)继承时它可以工作,但是当我从(Foo, Foo())
(类第一,实例第二)继承时则不能工作。