Misalkan saya memiliki file yang foo.pyberisi kelas Foo:
class Foo(object):
def __init__(self, data):
...
Sekarang saya ingin menambahkan fungsi yang membuat Fooobjek 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?