2015-03-10 17:33 GMT+00:00 Marco Giusti <marco.giu...@posteo.de>: > Credo che puoi fare meglio che questo. Vuoi che ogni callback venga > invocata una sola volta?
Ah sì, che si possa far meglio è fuori di dubbio :D Comunque no, non voglio che *ogni* callback venga invocata una sola volta. Ma comunque ammetto che avrei potuto trovare una soluzione molto più pulita. > Inoltre passare un oggetto come primo argomento mi suona tanto da > antipattern. Non è sbagliato, ma chiediti che oggetto sia. Mi suona da > antipattern per come i metodi e le funzioni in python funzionano. > come vedi le due chiamate sono identiche ma in più il metodo riceve > un oggetto (su cui opera il metodo). Il tuo codice sembra reinventare > una ruota che ormai è ben collaudata. Ok, premetto che mi è chiaro l'esempio che fai, e ci ho pensato un po' su queste tue parole, ma non credo di aver capito cosa intendi; ti spiace argomentare un pochino? > Comunque l'ultima parola l'hai tu perché il codice che hai postato non > ci aiuta molto a capire esattamente il funzionamento di questi > fantomatici oggetti C++. No, ecco, la questione C++ l'avete ingrandita un po' voi :P Nel senso che sì, io ho degli oggetti C++ sottostanti, ma il punto che volevo fare è solo che voglio che non esistano oggetti python che facciano riferimento ad oggetti C++ ormai distrutti... C++ l'ho nominato solo per giustificare il fatto che gli oggetti python, dopo la remove(), dovrebbero essere cancellati ovunque. Tutto qua :) L'unica cosa che ho omesso è che, in remove(), oltre a chiamare le callback, io ho anche una chiamata tipo `self._oggetto_cpp.distruggi()` e se dopo di essa provo a fare `self._oggetto_cpp.metodo()` ottengo un bel errore :) > PS. Le tue linee di codice sono identiche: > > for obj, cb in list(it for it in self._callbacks.get(event, [])): > for obj, cb in self._callbacks.get(event, [])[:]: Grazie; sì, ho presente [:], ma non mi piace molto, preferisco usare list(), che personalmente trovo più esplicito e facile da leggere. Ciauz ~Ale _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python