मान लीजिए कि मेरे पास foo.py
एक क्लास वाली फाइल है Foo
:
class Foo(object):
def __init__(self, data):
...
अब मैं एक फ़ंक्शन जोड़ना चाहता हूं 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 का अर्थ