On Mon, May 5, 2008 at 9:20 AM, Pietro Battiston <[EMAIL PROTECTED]> wrote: > Pietro Battiston ha scritto: > > enrico franchi ha scritto: > > > >> On Sun, May 4, 2008 at 7:20 PM, Pietro Battiston <[EMAIL PROTECTED]> wrote: > >> > >> > >>> (O intendi qualcos'altro? Io per ora del tipo "set" sto usando update, > >>> remove, add, metodi che non vorrei dover ridefinire) > >>> > >> > >> E non ridefinirli. Delegali. > > Vabbé che "Google is my friend", ma certo sei un tantinello criptico > (immagino si evinca dai miei messaggi precedenti quanto io sia poco > esperto di Python)?
Non è questione di esperienza di Python. E' una tecnica iper-standard di programmazione agli oggetti. Tipicamente quando progetti una qualunque gerarchia di classi una delle prime domande che ti devi porre è se usare ereditarietà o composizione (tipicamente l'ereditarietà è spesso usata a sproposito). Quando usi composizione spesso fai anche delega (specie nei casi in cui eri in lizza con l'ereditarietà pubblica). > "delegare" significa in pratica "richiamare esplicitamente il metodo di > libreria all'interno del metodo che si ridefinisce"? Tipo > > class nonderivata(): > def __fai_questo__(self): > set.__fai_questo__(self) > > ? > > Se sì, che ci guadagno?! > Se no, che vuol dire?! Kind of. In effetti *non* è come dici, ma ci vai vicino. Il caso base sarebbe class my_obj(object): def __init__(self): self.contents = set() def foo(self): return self.contents.foo() Ovviamente visto che Python è un linguaggio dinamico non hai necessità di farlo veramente ma puoi semplicemente scrivere il codice per generare questo codice per i metodi di interesse. Cosa ci guadagni? E' la solita banale fra "is a" e "has a". Quando usi ereditarietà per modellare una relazione di has-a, stai chiedendo guai. Comunque non credo sia il caso di fare qui un mini-corso di fondamenti di progettazione ad oggetti e non conosco risorse direttamente in Python per farlo. Potrei indicarti alcuni articoli di Martins http://www.objectmentor.com/resources/articles/lsp.pdf e già che ci siamo: http://www.objectmentor.com/resources/articles/ocp.pdf -- -enrico _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python