我需要一個類似於gobject.io_add_watch
但函數變量的函數。例如,它需要將變量stop
初始化爲stop = False
,當停止變爲True
時,它必須調用一個函數。我不能有一個單獨的線程在time.sleep循環中觀察變量。觀察屬性的變化
有沒有這樣的功能或方法來做到這一點?
我需要一個類似於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()
+1:不錯的使用案例。 – 2010-12-19 06:31:45
非常感謝! – 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