据我所知,这就像一个观察者模式。 场景:一个 Center 对象保留了一个包含其所有客户端的列表(队列)。我正在使用 Twisted。
- 其中一个客户端对象更改中心对象中的变量或通知中心更改变量,
- 然后中心对象立即检测到变化;
- 然后一旦检测到,中心对象调用队列中下一个对象的一些函数
- 客户端更改变量后,客户端对象将被消除。中心将处理下一个客户端对象。所以我想这些对象之间没有任何功能链。所以它与观察者模式有点不同。 (如何解决这个问题?如果我错了请纠正我。)
以下代码仅供演示:
class client():
def change(self):
self.center.va = 1
def inqueue(self):
self.center.queue.enqueue(self)
def function(self):
pass
class center():
def __init__(self):
self.queue = None
self.va = 0
#### When the self.va changes, this func will be invoked
def whenChanged(self):
next = self.queue.dequeue()
next.function()
最佳答案
将 va
设为属性。
class Center():
def __init__(self):
self.queue = None
self._va = 0
@property
def va(self):
return self._va
@va.setter
def va(self, value):
self._va = value
self.whenChanged()
def whenChanged(self):
next = self.queue.dequeue()
next.function()
关于python - 如何在变量更改时触发另一个对象中的函数。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39730037/