2010-12-19 3 views
6

gobject.io_add_watchと似た機能が必要ですが、変数です。たとえば、変数stopstop = Falseに初期化されていることを監視する必要があり、stopをTrueに変更すると関数を呼び出す必要があります。私はループ内の変数を見ている別のスレッドをtime.sleepで見ることはできません。変更のためのプロパティを見る

このような機能や方法はありますか?

+2

だけ.stop '持つ()'それをやってのより説明的および論理的な方法だろう。 「停止」はあなたがやることであり、高価になる可能性のある行動を誘発しますが、変数を設定するだけでは一般的に安いです(このユースケースでは、人々は何をするのかを理解する必要があります。 x.stop = True'、 'x.stop = False'、' x.running = False'、 'x.running = True'よりも、' 'x.stop()' 'と' 'x.start()等価物。 –

+0

私はそれを行う方法を示したにもかかわらず、私はあなたにこれに同意します。確かに、この技術には他のより優れたアプリケーションがあります。 :) –

答えて

17

クラスで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:良いユースケース。 –

+0

大変感謝しています! – Nolhian

関連する問題