SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • metal571

    metal571

    30 Mayıs 2006