看看下面的例子上型.__甲混亂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