Giả sử tôi có một tệp foo.py
chứa một lớp Foo
:
class Foo(object):
def __init__(self, data):
...
Bây giờ tôi muốn thêm một hàm tạo một Foo
đối tượng theo một cách nhất định từ dữ liệu nguồn thô. Tôi nên đặt nó như một phương thức tĩnh trong Foo hoặc như một hàm riêng biệt khác?
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))
Tôi không biết liệu điều đó có quan trọng hơn để thuận tiện cho người dùng hay không:
foo1 = foo.makeFoo(sourceData)
hoặc liệu điều quan trọng hơn là duy trì khớp nối rõ ràng giữa phương thức và lớp:
foo1 = foo.Foo.fromSourceData(sourceData)
@classmethod
, hãy xem Ý nghĩa của @ classmethod và @staticmethod cho người mới bắt đầu?