观察属性的变化
问题描述:
我需要一个类似于gobject.io_add_watch
但函数变量的函数。例如,它需要将变量stop
初始化为stop = False
,当停止变为True
时,它必须调用一个函数。我不能有一个单独的线程在time.sleep循环中观察变量。观察属性的变化
有没有这样的功能或方法来做到这一点?
答
一类使用property:
class Stopwatch(object):
def __init__(self, callback):
self._stop = False
self.callback = callback
@property
def stop(self): return self._stop
@stop.setter
def stop(self, value):
self._stop = value
if value: self.callback()
+0
+1:不错的使用案例。 – 2010-12-19 06:31:45
+0
非常感谢! – Nolhian 2010-12-19 06:48:46
只要有'.stop()'会做这件事的多个解释和逻辑的方式; “stop”是你做的事情,它触发的行为可能很昂贵,而设置一个变量通常很便宜(我意识到在这个用例中人们应该意识到它会做什么,但是这个原则是成立的)。 'x.stop()'和'x.start()'比'x.stop = True'和'x.stop = False'或'x.running = False'和'x.running = True'或等价物。 – 2010-12-19 06:52:16
即使我展示了如何做到这一点,我也同意你的看法。当然,这项技术还有其他更好的应用。 :) – 2010-12-19 11:57:43