am folgenden Beispiel Werfen Sie einen BlickEine Verwirrung auf Typ .__ init__ in 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
Der Ausgang ist
Base.__init__() with cls <class '__main__.M'>, name M...
Base.__init__() with cls <class '__main__.D2'>, name D2...
ich über das Ergebnis so verwirrt fühlen,
- Warum
Base.__init__
fürD2
aufgerufen werden, auch haben wir keine Instanz vonD2
erstellen? - Da
Base.__init__
fürD2
aufgerufen werden, warumD1
nicht?
Err ... 'Base (Argumente)' 'ruft Basis .__ init__' ... – ForceBru
„Warum 'Basis .__ init__' wird für 'D2' aufgerufen, auch wenn wir keine Instanz von' D2' erstellt haben? " - weil Sie eine Instanz von "Base" erstellt haben. Diese Instanz ist "D2". – user2357112