Voglio realizzare il modello Observable
in Python per un paio di lavoratori, e sono imbattuto in questa utile frammento:Implementazione di un callback in Python - passando un riferimento richiamabile alla funzione corrente
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)
Fonte: Here
Come ho capito, al fine di subscribe
, avrei bisogno di passare una richiamata alla funzione che verrà chiamata su fire
. Se la funzione chiamante era un metodo class
, presumibilmente avrei potuto usare self
, ma in assenza di questo - come potrei ottenere direttamente una richiamata che può essere utile per il bit self.callbacks.append(callback)
?
Manca l'argomento 'self' nei metodi. –
Whoops. Hai dimenticato il metodo di istanza. Il metodo statico non ottiene un "sé". – Amber
Grande, grazie mille - ero alle prese con statico in effetti :) – malangi