Ich möchte die Klassenmethode addInstances
innerhalb von __init__
aufrufen, ohne den Klassennamen Foo
zu wiederholen.Rufen Sie eine Klassenmethode aus __init__, ohne den Klassennamen zu wiederholen
class Foo():
myInstances = {}
@classmethod
def addInstance(cls, name, obj):
cls.myInstances[name]=obj
def __init__(self, name):
Foo.addInstance(name, self) # class name "Foo" is repeated
#use the class
if __name__ == "__main__":
Foo('testName')
print(Foo.myInstances)
Der Code oben tut, was ich erwarte es zu tun. Jedoch wird "Foo
" wiederholt.
Ersetzen der Linie
Foo.addInstance(name, self) # class name "Foo" is repeated
mit
cls.addInstance(name, self)
führt zu NameError: name 'cls' is not defined
.
Sie können auch anrufen 'self.addInstances (..)' – Vinny