2015-03-08 15:12 GMT+00:00 Marco Giusti <marco.giu...@posteo.de>: > Così come registri una callback, così la rimuovi. Se non riesci a > definire formalmente un ciclo di vita per i tuoi oggetti, allora è > probabile che nel tuo design qualcosa sia sbagliato.
> Fossi in te inizierei con una implementazione di questo tipo. Se è vero > che è primitiva, le specifiche non sembrano ancora definite e trovo > inutile andare a complicarsi troppo la vita. Scrivi un paio di test, > vedi se il codice che viene fuori è soddisfacente o se richiede qualche > hack non troppo elegante e parti da lì per migliorarlo. Bene, il codice che mi hai dato è chiaro e fa decisamente il suo lavoro, però forse questa volta stavo mirando a complicarmi la vita senza motivo (forse, dentro di me, stavo cercando di replicare un meccanismo "signals-and-slots")... Ma questi due consigli che mi hai dato valgono molto: per quanto semplici, mi rimettono un po' i prospettiva :) > Per un momento ho creduto che "go" fosse il linguaggio. Non conosco > nonlocal ma hai ragione se dici che c'è un errore grossolano. Più o meno > è questo che avevo in mente, ma non avendo neanche provato il > codice... > > def send_data_blocking(data): > def go(): > free_to_go[0] = True > free_to_go = [False] > send_data(data, callback=go) > while not free_to_go[0]: > sleep(0.1) Sì, é che uso Python 3 e nonlocal sostanzialmente fa il lavoro di global in uno scope non-globale (tipo questo caso, con una chiusura). Evita di dover usare la lista come hai mostrato - ma stavo solo facendo il pignolo :) Ancora mille grazie ~Ale _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python