efphe ha scritto:
[...]

In Python la classe base non è inizializzata a meno che non lo richieda tu esplicitamente.

Mi sembrava che la frase:

"""
ma nel mio caso voglio che le mie classi utilizzino tutte lo *stesso padre*
"""

fosse chiara.

Il problema non sta nell'inizializzazione, e non si aggira non inizializzando nulla.

Mi spiego in altre parole: ho bisogno di *un*'istanza Foo che venga utilizzata da *ogni* istanza Bar, in modo che l'istanza Foo sia condivisa, persistente e shared per ogni classe Bar.


A parte la persistenza (ma che cosa intendi), usare il pattern Borg per la classe base mi sembra la soluzione più semplice.

Al tempo stesso, mi chiedo se sia possibile (di certo lo e', basta fare abbastanza hack) e come possa essere implementato un meccanismo di "esportazione di tipo ereditaria": il metodo inc, in altre parole, dovrebbe inizializzare il primo argomento (self) a Bar.bar e non a Foo.foo.

Ma attenzione, se ho due istanza Bar, B e C, devo avere:

memory_address(B.inc)= memory_address(C.inc)


Se è proprio questo quello che vuoi, puoi fare:

import types

bar.inc = types.MethodType(foo.inc.im_func, bar)




Leggi http://docs.python.org/ref/types.html per maggiori info.




Saluti  Manlio Perillo
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a