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

Rispondere a