foo.py
クラスを含むファイルがあるとしますFoo
:
class Foo(object):
def __init__(self, data):
...
ここFoo
で、生のソースデータから特定の方法でオブジェクトを作成する関数を追加します。Fooの静的メソッドまたは別の別の関数として配置する必要がありますか?
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))
ユーザーにとって便利であることがより重要かどうかはわかりません。
foo1 = foo.makeFoo(sourceData)
または、メソッドとクラスの間の明確な結合を維持することがより重要かどうか:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethod
、初心者向けの@classmethodと@staticmethodの意味を