Supponiamo di avere un file foo.py
contenente una classe Foo
:
class Foo(object):
def __init__(self, data):
...
Ora voglio aggiungere una funzione che crea un oggetto Foo
in un certo modo dai dati di origine grezza. Dovrei metterlo come metodo statico in Foo o come un'altra funzione separata?
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))
Non so se sia più importante essere convenienti per gli utenti:
foo1 = foo.makeFoo(sourceData)
o se è più importante mantenere un accoppiamento chiaro tra il metodo e la classe:
foo1 = foo.Foo.fromSourceData(sourceData)