我有一個跟蹤其他幾個類的類。這些其他類中的每一個都需要訪問特定變量的值,並且這些其他類中的任何一個都必須能夠修改此特定變量,以便所有其他類都可以看到更改後的變量。Python對象屬性共享
我試圖使用屬性來完成此操作。一個例子如下:
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個命令返回這些值?我該如何解決這個問題,以便他們返回所需的值?
感謝
方式問一個很深思熟慮的,詳細的,具體與預期和觀察到的行爲問題上只有你的第二個問題的網站。做得太好了。 :) –
旁註:如果你在Python27上,你的類應該繼承'object'。是的,同意@ g.d.d.c,寫得很好的問題。 – aneroid
爲發佈什麼無框提供額外的上下文。這裏是關於Python 2.7的新樣式類的文檔:https://www.python.org/doc/newstyle/ – idjaw