我有一个跟踪其他几个类的类。这些其他类中的每一个都需要访问特定变量的值,并且这些其他类中的任何一个都必须能够修改此特定变量,以便所有其他类都可以看到更改后的变量。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