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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • Top Gear

    Top Gear

    27 Mart 2006