[Python] Liste e collezioni
Giorgio Zoppi
giorgio.zoppi a gmail.com
Mar 26 Feb 2008 10:27:15 CET
Cookbook:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/498249
Ciauz.
2008/2/25, Pietro Battiston <battiston a mail.dm.unipi.it>:
> Salve a tutti,
>
> supponiamo (è la semplificazione di un problema che ho davvero) che io
> abbia una classe A:
>
> class A():
> def metodo1(self):
> ....
> def metodo2(self):
> ....
> ....
>
> Il mio programma usa questa classe e deve potere gestire
> indifferentemente un singolo elemento o collezioni di elementi di questa
> classe (fintanto che non ne deve ricevere alcun input, deve poterlo fare
> trasparentemente senza domandarsi se è un elemento o è una lista di
> elementi).
>
> Il modo banale di risolvere il problema sarebbe far sì che il mio
> programma in realtà maneggi solo liste (eventualmente con un solo
> elemento). Ma in realtà il mio programma l'ho già scritto e non mi va di
> cambiarlo, ma soprattutto di complicarlo.
>
> Allora ho pensato di creare la seguente classe:
>
> class listadiA(list):
> def metodo1(self, parametri):
> for i in self:
> self[i].metodo1(parametri)
>
> def metodo2(self, parametri):
> for i in self:
> self[i].metodo2(parametri)
>
> ....
>
> (almeno per tutti i metodi che non ritornano alcun valore, poi gli altri
> li "sovrascrivo" in modo meno banale)
>
>
> Mi domando però se c'è un modo più furbo di scrivere una roba del
> genere, per sprecare meno codice ma soprattutto per non doverlo
> aggiornare se cambio/aggiungo metodi della classe originale...
> Con "dir" io riesco ad avere tutti i metodi di "A", ma una volta che ho
> un metodo non so come aggiungere il suo "metodo derivato" al dizionario
> dei metodi di "listadiA".
>
> In pratica avrei bisogno di modificare il dizionario dei metodi di
> listadiA come fosse un qualsiasi dizionario.
>
> C'è un modo per farlo o è pura follia?
>
> grazie
>
> Pietro
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
More information about the Python
mailing list