我有一个班级,负责跟踪其他几个类。这些其他类都需要访问特定变量的值,并且其中的任何一个类也必须能够修改此特定变量,以便所有其他类都可以看到更改后的变量。
我尝试使用属性来实现这一点,以下是一个示例:
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
除了最后三个命令,一切都按照我的要求工作。它们会给出:
>>> objB.state = 1
>>> print objA.state
10
>>> print objB.state
1
为什么最后三个命令返回这些值?我该如何修复它们以使其返回想要的值?
谢谢。
object
。另外,同意@g.d.d.c的观点,这是一个非常写得好的问题。 - aneroid