2010-12-19 27 views
6

gobject.io_add_watch'a benzer ancak bir değişkene ihtiyacım var. Örneğin, stop = False için başlatılan stop değişkenini izlemek zorundadır ve durma True olarak değiştirildiğinde bir işlevi çağırmalıdır. Değişkenini bir time.sleep ile izleyen ayrı bir iş parçacığım olamaz.Değişiklik için bir özelliği izlemek

Böyle bir işlev ya da böyle bir yolu var mı?

+2

sadece .stop 'sahip olan()' yapmanın bir açıklayıcı ve mantıksal bir şekilde olacaktır; “Dur”, yaptığınız bir şeydir ve bu, pahalı olabilecek eylemleri tetiklerken, sadece bir değişkeni ayarlamak genellikle ucuzdur (bu kullanım durumunda insanların ne yapacağını anlaması gerektiğini, ancak ilkenin beklediğini fark ediyorum). 'x.stop()' ve 'x.start()' 'x.stop = True' ve' x.stop = False 'veya 'x.running = False' ve' x.running = True' değerinden daha nizedir. eşdeğerleri. –

+0

Nasıl yapılacağını göstersem de, sana bu konuda katılıyorum. Elbette teknik başka, daha iyi uygulamalara sahiptir. :) –

cevap

17

bir sınıfta bir property kullanın:

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: güzel kullanım çantası. –

+0

Awesome çok teşekkürler! – Nolhian

İlgili konular