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

  • Dylan Brenan

    Dylan Brenan

    22 Aralık 2009
  • manadude21

    manadude21

    11 Mart 2008
  • michaeljacksonVEVO

    michaeljacks

    2 EYLÜL 2009