यह प्रश्न this other one के समान है, इस अंतर के साथ कि बेस क्लास में डेटा सदस्य वर्णनकर्ता प्रोटोकॉल द्वारा लिपटा हुआ है।बेस क्लास के डेटा सदस्य को कॉल कैसे करें यदि इसे व्युत्पन्न कक्षा में किसी संपत्ति के रूप में अधिलेखित किया जा रहा है?
दूसरे शब्दों में, यदि मैं व्युत्पन्न कक्षा में किसी संपत्ति के साथ अपना नाम ओवरराइड कर रहा हूं तो मैं बेस क्लास के सदस्य तक कैसे पहुंच सकता हूं?
class Base(object):
def __init__(self):
self.foo = 5
class Derived(Base):
def __init__(self):
Base.__init__(self)
@property
def foo(self):
return 1 + self.foo # doesn't work of course!
@foo.setter
def foo(self, f):
self._foo = f
bar = Base()
print bar.foo
foobar = Derived()
print foobar.foo
कृपया ध्यान दें कि मैं भी क्योंकि अन्यथा आधार वर्ग में self.foo का काम काम नहीं करता है एक सेटर को परिभाषित करने की जरूरत है।
सभी वर्णनकर्ता प्रोटोकॉल के सभी, उदाहरण के एक सदस्य (विशेषता) विरासत के साथ ठीक से प्रतीत होता है नहीं ...
सभी उत्तर बहुत ही दिलचस्प होते हैं और मैं उनमें से ज्यादातर upvoted लेकिन यह एक सीधे करने के लिए था बिंदु, यह वास्तव में मुझे हाथ में समस्या समझ में आया। – UncleZeiv