निर्धारित नहीं करता है यहाँ कोड है:अजगर संपत्ति
def Property(func):
return property(**func())
class A:
def __init__(self, name):
self._name = name
@Property
def name():
doc = 'A''s name'
def fget(self):
return self._name
def fset(self, val):
self._name = val
fdel = None
print locals()
return locals()
a = A('John')
print a.name
print a._name
a.name = 'Bob'
print a.name
print a._name
से ऊपर निम्नलिखित उत्पादन का उत्पादन:
{'doc': 'As name', 'fset': <function fset at 0x10b68e578>, 'fdel': None, 'fget': <function fget at 0x10b68ec08>}
John
John
Bob
John
कोड from here लिया जाता है।
प्रश्न: क्या गलत है? यह कुछ आसान होना चाहिए लेकिन मुझे यह नहीं मिल रहा है।
नोट: मुझे जटिल हो रही/सेटिंग के लिए संपत्ति की आवश्यकता है, न केवल विशेषता को छुपाएं।
अग्रिम धन्यवाद।
आप 100% निश्चित है कि 'fset' निर्धारित नहीं करता है' 'name' _name' के बजाय कर रहे हैं? बनाने में आसान गलती, और आपके लक्षणों को समझाएगी .. –
@MartijnPieters 99.9% मैंने अभी कोड और इस कोड द्वारा उत्पादित आउटपुट की प्रतिलिपि बनाई है =) – tonytony
केवल '@property def' का उपयोग करने के बजाय गुणों को परिभाषित करने का यह अजीब तरीका करने का कोई कारण नाम (...): "docstr" \ n getter', '@name.setter def name (...): सेटर'? – delnan