[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