看看下面的例子上型.__甲混乱init__在Python 2
class Base(type):
def __init__(cls, name, bases, dict_):
print 'Base.__init__() with cls %s, name %s...' % (cls, name,)
type.__init__(cls, name, bases, dict_)
M = Base('M', (object,), {})
class D1(Base):
pass
class D2(M):
pass
输出是
Base.__init__() with cls <class '__main__.M'>, name M...
Base.__init__() with cls <class '__main__.D2'>, name D2...
我感到非常困惑关于结果,
- 为什么
Base.__init__
被调用为D2
,即使我们还没有创建D2
的实例? - 既然
Base.__init__
被调用为D2
,为什么D1
不是?
嗯...'基地(参数)''调用.__基地...... init__' – ForceBru
“为什么'基地.__ init__'被调用为'D2',即使我们没有创建'D2'的实例?“ - 因为你已经创建了一个'Base'的实例。这个例子是'D2'。 – user2357112