Supposons que j'ai un fichier foo.py
contenant une classe Foo
:
class Foo(object):
def __init__(self, data):
...
Maintenant, je veux ajouter une fonction qui crée un Foo
objet d'une certaine manière à partir de données source brutes. Dois-je le mettre comme méthode statique dans Foo ou comme une autre fonction distincte?
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))
Je ne sais pas s'il est plus important d'être pratique pour les utilisateurs:
foo1 = foo.makeFoo(sourceData)
ou s'il est plus important de maintenir un couplage clair entre la méthode et la classe:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethod
, voir Signification de @classmethod et @staticmethod pour débutant?