मैं अपने कुछ वर्गों को गेटर्स के व्यापक उपयोग से बदल रहा हूं और गुणों के अधिक पायथोनिक उपयोग के लिए बसता हूं।
लेकिन अब मैं फंस गया हूं क्योंकि मेरे पिछले कुछ गेटर्स या सेटर बेस क्लास के संबंधित तरीके को कॉल करेंगे, और फिर कुछ और करेंगे। लेकिन यह गुणों के साथ कैसे पूरा किया जा सकता है? पैरेंट क्लास में प्रॉपर्टी गेट्टर या सेटर को कैसे कॉल करें?
बेशक सिर्फ विशेषता को बुलाना ही अनंत पुनरावृत्ति देता है।
class Foo(object):
@property
def bar(self):
return 5
@bar.setter
def bar(self, a):
print a
class FooBar(Foo):
@property
def bar(self):
# return the same value
# as in the base class
return self.bar # --> recursion!
@bar.setter
def bar(self, c):
# perform the same action
# as in the base class
self.bar = c # --> recursion!
# then do something else
print 'something else'
fb = FooBar()
fb.bar = 7
Foo.bar.fset(self, c)
विरासत में दिए गए सेटर में क्यों बुलाना चाहिए ? क्यों नहींFoo.bar.fset(c)
- "स्व" के बिना -मुझे लगा कि यह स्पष्ट रूप से पारित हो गया है?