সুতরাং, আমি পাইথন ২.6 এ সজ্জকারদের সাথে খেলছি এবং তাদের কাজ করতে আমার কিছুটা সমস্যা হচ্ছে। আমার ক্লাস ফাইলটি এখানে:
class testDec:
@property
def x(self):
print 'called getter'
return self._x
@x.setter
def x(self, value):
print 'called setter'
self._x = value
আমি এর অর্থ কী বোঝাতে x
চাই তা হ'ল সম্পত্তির মতো আচরণ করা , তবে এই ফাংশনগুলিকে গেট অ্যান্ড সেট করে কল করুন। সুতরাং, আমি আইডিএল বরখাস্ত করেছি এবং এটি পরীক্ষা করেছি:
>>> from testDec import testDec
from testDec import testDec
>>> t = testDec()
t = testDec()
>>> t.x
t.x
called getter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "testDec.py", line 18, in x
return self._x
AttributeError: testDec instance has no attribute '_x'
>>> t.x = 5
t.x = 5
>>> t.x
t.x
5
স্পষ্টতই প্রথম কলটি প্রত্যাশার মতো কাজ করে, যেহেতু আমি গ্রাহককে কল করি এবং কোনও ডিফল্ট মান নেই এবং এটি ব্যর্থ হয়। ঠিক আছে, ভাল, আমি বুঝতে পেরেছি। যাইহোক, বরাদ্দ করার জন্য কলটি t.x = 5
একটি নতুন সম্পত্তি তৈরি করেছে বলে মনে হচ্ছে x
, এবং এখন প্রাপ্তিটি কাজ করে না!
আমি কী মিস করছি?