foo.py
Bir sınıf içeren bir dosyam olduğunu varsayalım Foo
:
class Foo(object):
def __init__(self, data):
...
Şimdi Foo
, ham kaynak verilerinden belirli bir şekilde bir nesne yaratan bir işlev eklemek istiyorum . Foo'da statik bir yöntem mi yoksa ayrı bir işlev olarak mı kullanmalıyım?
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))
Kullanıcılar için uygun olmanın daha önemli olup olmadığını bilmiyorum:
foo1 = foo.makeFoo(sourceData)
veya yöntem ile sınıf arasında açık bir ilişki kurmanın daha önemli olup olmadığı:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethod
bkz . Yeni başlayanlar için @classmethod ve @staticmethod'un Anlamı?