Super, už nějakou doby DPU nečtu, ale tohle vypadá zajímavě. Trošku mi v tom ale chybí (pokud jsem něco nepřehlédl) elegance signálů z Qt (myslím, že Gtk+ má podobný systém). Tedy že každá třída definuje 0-n signálů identifikovaných jménem a je možné se připojit pomocí metody connect. Ale dalo by se to celkem snadno implementovat.
from notify.signal import Signal
class NotifyObject(object):
def __init__(self):
self.__signals__ = {}
self.registerSignals()
def registerSignals(self):
pass
def registerSignal(self, signalName, accumulator = None):
self.__signals__[signalName] = Signal(accumulator)
def connect(self, signalName, callable):
self.__signals__[signalName].connect(callable)
def emit(self, signalName, *args):
self.__signals__[signalName].emit(args)
if (__name__ == '__main__'):
class TestObject(NotifyObject):
def registerSignals(self):
self.registerSignal('testSignal')
t = TestObject()
def printArgs(*args):
print args
t.connect('testSignal', printArgs)
t.emit('testSignal', 1, 2, 3.5, 'xxx')
*22.6.1968
Od mala mě fascinoval potenciál počítačů a od prvního osobního seznámení s nimi jsem věděl, že tahle „věcička“ je přesně tím, čím se chci zabývat celý život. Hned po maturitě jsem si našel práci, kde jsem s nimi mohl pracovat a hlavně učit se. V průběhu let jsem vystřídal řadu zaměstnavatelů a specializací (např. ekonomické systémy, implementace BIOSu pro CP/M, řízení tech. procesů) až jsem nakonec na dlouhá léta zakotvil u Delphi a databází (hlavně InterBase), nejdříve ve firmě PCS, pak AKTIS (nyní ABRA) a posléze Borland ČR. Od uvolnění zdrojových textů InterBase v r. 2000 a zrodu projektu Firebird se podílím na jeho vývoji (nyní hlavně jako QA manager). Od r. 2001 pracuji pro spol. IBPhoenix. Mým preferovaným programovacím jazykem je již dlouhá léta Python.
Přečteno 16 308×
Přečteno 15 614×
Přečteno 7 666×
Přečteno 7 030×
Přečteno 5 877×