Misalkan saya memiliki file yang foo.py
berisi kelas Foo
:
class Foo(object):
def __init__(self, data):
...
Sekarang saya ingin menambahkan fungsi yang membuat Foo
objek dengan cara tertentu dari data sumber mentah. Haruskah saya meletakkannya sebagai metode statis di Foo atau sebagai fungsi lain yang terpisah?
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))
Saya tidak tahu apakah lebih penting untuk nyaman bagi pengguna:
foo1 = foo.makeFoo(sourceData)
atau apakah lebih penting untuk mempertahankan kopling yang jelas antara metode dan kelas:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethod
, lihat Arti @classmethod dan @staticmethod untuk pemula?