Chcę zaimplementować wzorzec Observable
w Pythonie dla kilku pracowników, i natknąłem się na to pomocny fragmencie:Wdrożenie zwrotnego w Pythonie - przepuszczanie wpłacone odniesienie do aktualnej funkcji
class Event(object):
pass
class Observable(object):
def __init__(self):
self.callbacks = []
def subscribe(self, callback):
self.callbacks.append(callback)
def fire(self, **attrs):
e = Event()
e.source = self
for k, v in attrs.iteritems():
setattr(e, k, v)
for fn in self.callbacks:
fn(e)
Źródło: Here
Jak rozumiem, w celu subscribe
, musiałbym przekazać wywołanie zwrotne do funkcji, która będzie wywoływana na fire
. Gdyby funkcja wywołująca była metodą class
, prawdopodobnie mógłbym użyć self
, ale w przypadku braku tego - w jaki sposób mógłbym uzyskać wywołanie zwrotne, które może być przydatne dla bitów self.callbacks.append(callback)
?
Brakujący argument "self" w metodach. –
Whoops. Zapomniałem o tym w metodzie instancji. Metoda statyczna nie otrzymuje "self". – Amber
Świetnie, dziękuję bardzo - walczyłem ze statyczną w rzeczywistości :) – malangi