निम्नलिखित वर्ग पर विचार करें:एक अजगर की क्लास के लिए गेटर और सेटर को नियंत्रित करना
class Token:
def __init__(self):
self.d_dict = {}
def __setattr__(self, s_name, value):
self.d_dict[s_name] = value
def __getattr__(self, s_name):
if s_name in self.d_dict.keys():
return self.d_dict[s_name]
else:
raise AttributeError('No attribute {0} found !'.format(s_name))
मेरी कोड टोकन में कुछ अन्य कार्य हो (get_all की तरह() जो वापसी d_dict, है (s_name) जो मुझे बताओ अगर मेरे टोकन एक विशेष विशेषता है)।
वैसे भी, मुझे लगता है कि यह मेरी योजना में एक दोष है क्योंकि यह काम नहीं करता है: जब मैं एक नया उदाहरण बनाता हूं, तो पाइथन __setattr__('d_dict', '{}')
पर कॉल करने का प्रयास करता है।
मैं टोकन.सेट (नाम, मूल्य) जैसे कुछ लिखने के बिना एक समान व्यवहार (शायद एक और पाइथोनिक तरीके से कैसे प्राप्त कर सकता हूं) प्राप्त कर सकता हूं और प्रत्येक नाम को सेट (नाम) प्राप्त कर सकता हूं या एक विशेषता प्राप्त कर सकता हूं टोकन।
डिजाइन दोष और/या मूर्खता के बारे में आलोचकों :) का स्वागत करते हैं
धन्यवाद!
मुझे लगता है कि मैं ऐसा करूँगा :) वैसे भी, मैं पायथन 3.1 का उपयोग करता हूं, इसलिए मेरी सभी कक्षाएं नई स्टाइल क्लास हैं। myClassInstance.name1 = मान 1 myClassInstance.name2 2 = मान उचित साथ : – thomas