[Python] exporting di classi

Manlio Perillo manlio_perillo a libero.it
Ven 1 Dic 2006 16:53:28 CET


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


Maggiori informazioni sulla lista Python