Manlio Perillo wrote:
Federico Tomassini ha scritto:
Ciao a tutti,
ho un dubbio sui python internal.
Ecco la situazione; ho due classi:
###
class Foo:
def __init__(self):
self.x= 0
def inc(self):
self.x+= 1
class Bar:
def __init__(self):
self.x= 0
foo=Foo()
bar=Bar()
###
Poi, eseguo cio' che chiamo un'exporting di classe:
###
attr= getattr(foo, 'inc')
setattr(bar, 'inc', attr)
###
In questo modo la classe `bar` avra' il metodo 'inc',
richiamabile tramite `self.inc`.
Se a questo punto qualcuno si chiedesse perche' non
eredito, la risposta e' la seguente: l'ereditarieta'
costringe, per ogni classe, a inizializzare un nuovo
padre; queso in genere non e' un problema, ma nel mio
caso voglio che le mie classi utilizzino tutte lo
*stesso padre*, e non un' istanza ciascuna.
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.
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)
--
efphe
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python