Angenommen, ich habe eine Datei foo.pymit einer Klasse Foo:
class Foo(object):
def __init__(self, data):
...
Jetzt möchte ich eine Funktion hinzufügen, die ein FooObjekt auf eine bestimmte Weise aus Rohdaten erstellt. Sollte ich es als statische Methode in Foo oder als eine andere separate Funktion setzen?
class Foo(object):
def __init__(self, data):
...
# option 1:
@staticmethod
def fromSourceData(sourceData):
return Foo(processData(sourceData))
# option 2:
def makeFoo(sourceData):
return Foo(processData(sourceData))
Ich weiß nicht, ob es wichtiger ist, für Benutzer bequem zu sein:
foo1 = foo.makeFoo(sourceData)
oder ob es wichtiger ist, eine klare Kopplung zwischen der Methode und der Klasse aufrechtzuerhalten:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethodSie unter Bedeutung von @classmethod und @staticmethod für Anfänger.