मेरे पास एक कक्षा है जो कई अन्य वर्गों का ट्रैक रखती है। इन सभी वर्गों में से प्रत्येक को किसी विशेष चर के मूल्य तक पहुंचने की आवश्यकता होती है, और इनमें से किसी भी अन्य वर्ग में भी इस विशेष चर को संशोधित करने में सक्षम होना चाहिए, ताकि अन्य सभी वर्ग बदले गए चर को देख सकें।पायथन ऑब्जेक्ट प्रॉपर्टी शेयरिंग
मैंने गुणों का उपयोग करके इसे पूरा करने की कोशिश की।
class A:
def __init__(self, state):
self._b_obj = B(self)
self._state = state
@property
def state(self):
return self._state
@state.setter
def state(self,val):
self._state = val
@property
def b_obj(self):
return self._b_obj
@b_obj.setter
def b_obj(self,val):
self._b_obj = val
class B:
def __init__(self, a_obj):
self.a_obj = a_obj
@property
def state(self):
return self.a_obj.state
@state.setter
def state(self,val):
self.a_obj.state = val
मैं इस प्रकार के रूप में यह काम करना चाहता हूँ:
>>> objA = A(4)
>>> objB = objA.b_obj
>>> print objA.state
4
>>> print objB.state
4
>>> objA.state = 10
>>> print objA.state
10
>>> print objB.state
10
>>> objB.state = 1
>>> print objA.state
1
>>> print objB.state
1
सब कुछ काम करता है के रूप में मैं यह पिछले 3 आदेशों के अलावा करना चाहते हैं एक उदाहरण इस प्रकार है। वे देते हैं:
>>> objB.state = 1
>>> print objA.state
10
>>> print objB.state
1
अंतिम 3 आदेश इन मानों को क्यों वापस करते हैं? मैं इसे कैसे ठीक कर सकता हूं ताकि वे वांछित मान वापस कर सकें?
धन्यवाद
रास्ता साइट के लिए केवल अपने 2 प्रश्न पर एक बहुत सुविचारित, विस्तृत, विशिष्ट दोनों की उम्मीद है और मनाया व्यवहार के साथ सवाल पूछने के लिए। बहुत अच्छा किया। :) –
Sidenote: यदि आप Python27 पर हैं, तो आपकी कक्षाओं को 'ऑब्जेक्ट' विरासत में होना चाहिए। और हाँ, @ g.d.d.c के साथ सहमत हुए, बहुत अच्छी तरह से लिखित प्रश्न। – aneroid
एनेरोइड पोस्ट किए गए अतिरिक्त संदर्भ प्रदान करने के लिए। यहां पाइथन 2.7 के लिए नई स्टाइल क्लासेस पर प्रलेखन है: https://www.python.org/doc/newstyle/ – idjaw