Betrachten Sie den Code in der Datei my_module.py:unerwartetes Verhalten während Python-Module mit Klassendefinitionen importieren
class A(object):
def __init__(self, x=er()):
self.x = x
Nun, wenn ich dieses Modul importieren
import my_module
ich eine Fehlermeldung erhalten,
name 'er is not defined
Während ich verstehe, dass my_module er
nicht definiert hat, aber ich nie erstellen eine Instanz von class A
. Daher ist es verwirrend, dass Python versucht, den __init__
Callback auszuführen, wenn das Modul einfach importiert wird. Obwohl die __init__
Anruf nicht voll erklärt am Beispiel unten ausgeführt:
class A(object):
def __init__(self, x=5):
self.x = x
print ('I am here')
Nun, wenn ich das Modul importieren - nichts gedruckt wird, und dieses Verhalten erwartet wird.
Ich bin verwirrt, warum die Funktion er
in dem ersten Beispiel aufgerufen wird, wenn ich nicht ein Objekt class A
instanziieren. Irgendwelche Hinweise auf die Dokumentation, die das erklärt?
Wie auch immer, 'x' fungiert hier nicht als Rückruf, wenn Sie das meinen. Sie können nur einen Parameter 'er' haben und in' _init__' können Sie 'self.x = er()' eingeben –