आमतौर पर पायथन डिस्क्रिप्टर को वर्ग विशेषताओं के रूप में परिभाषित किया जाता है। लेकिन मेरे मामले में, मैं चाहता हूं कि प्रत्येक ऑब्जेक्ट इंस्टेंस में अलग-अलग सेट डिस्क्रिप्टर हों जो इनपुट पर निर्भर करता है। उदाहरण के लिए:प्रति-आवृत्ति संपत्ति वर्णनकर्ता बनाएं?
class MyClass(object):
def __init__(self, **kwargs):
for attr, val in kwargs.items():
self.__dict__[attr] = MyDescriptor(val)
प्रत्येक वस्तु विशेषताओं इन्स्टेन्शियशन समय में निर्णय लिया जाता है के विभिन्न सेट है कर रहे हैं। चूंकि ये एक-ऑफ ऑब्जेक्ट्स हैं, इसलिए पहले उन्हें उप-वर्ग करना सुविधाजनक नहीं है।
tv = MyClass(type="tv", size="30")
smartphone = MyClass(type="phone", os="android")
tv.size # do something smart with the descriptor
ऑब्जेक्ट को डिस्क्रिप्टर असाइन करना काम नहीं लगता है। अगर मैं विशेषता तक पहुंचने का प्रयास करता हूं, तो मुझे
<property at 0x4067cf0>
क्या आपको पता है कि यह क्यों काम नहीं कर रहा है? क्या कोई काम आसपास है?
अतिसंवेदनशील वर्णनकर्ताओं के साथ MyClass के विभिन्न उप-वर्गों का उपयोग क्यों नहीं करते? – KurzedMetal
अधिक उदाहरण जोड़ने के लिए संपादित किया गया। मुझे लगता है कि प्रति-उदाहरण वर्णनकर्ता बस नहीं किया जा सकता है। मैंने __getattr__ का उपयोग कर इसके आसपास काम किया है। फिर भी अंतर्निहित भाषा बाधा को समझ में नहीं आता है। –
वर्णनकर्ता केवल कक्षा स्तर पर काम करते हैं, क्षमा करें। –