Припустимо, у мене є файл, 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 для початківців?