7 Temmuz 2009, Salı
Python olay sistemi
Ne olay sistem Python için kullanıyor musunuz? Zaten pydispatcher, farkındayım ama bulunabilir merak ediyordum, ya da yaygın olarak kullanılır?
Büyük çerçeveler parçası olan etkinlik yöneticileri ilgilenmiyorum, oldukça kolay uzatabilirim bu çıplak kemikleri küçük bir çözüm kullanmak istiyorum.
CEVAP
7 Temmuz 2009, Salı
Bir EventHook Michael önerdiği gibi Event Pattern onun: Foord kullanıyoruz
Sadece derslerine EventHooks ekleyin:
class MyBroadcaster()
def __init__():
self.onChange = EventHook()
theBroadcaster = MyBroadcaster()
# add a listener to the event
theBroadcaster.onChange = myFunction
# remove listener from the event
theBroadcaster.onChange -= myFunction
# fire event
theBroadcaster.onChange.fire()
Biz işlevselliği Michaels sınıf için bir nesne tüm dinleyici kaldırmak için Ekle ve bu ile sona erdi:
class EventHook(object):
def __init__(self):
self.__handlers = []
def __iadd__(self, handler):
self.__handlers.append(handler)
return self
def __isub__(self, handler):
self.__handlers.remove(handler)
return self
def fire(self, *args, **keywargs):
for handler in self.__handlers:
handler(*args, **keywargs)
def clearObjectHandlers(self, inObject):
for theHandler in self.__handlers:
if theHandler.im_self == inObject:
self -= theHandler
Bunu Paylaş:
Python paket/modül yönetim sistemi var...
Yükleme pip ile yerel dosya sistemi kl...
Python için hızlı şablon Sistemi nedir...
Verim anahtar kelime Python ne yapar?...
Python bir metaclass nedir?...