Il giorno 13/mar/2011, alle ore 01.36, lex mlist ha scritto:
> Ciao a tutti,
>
> mi trovo in una condizione particolare.
> Ho una classe che contiene dei dati, e in questa classe viene istanziata a
> sua volta un'oggetto che dovrebbe manipolare i dati contenuti nella classe
> stessa.
> Mi spiego con un esempio:
>
> ===============================
> class A(object):
> def __init__(self):
> self.b = B()
> self.txt = 'Ciao'
>
> class B(object):
> def saluta(self):
> # accedere a self.txt della classe A
> pass
> ===============================
>
> Usando i metodi di B() attraverso A().b.saluta() vorrei che fosse stampato il
> valore di self.txt
>
> Potrei ovviamente passargli il valore per parametro, ma il problema è che le
> funzioni reali devono manipolare parecchi dati e le funzioni vengono
> utilizzate
> in più punti del programma, per cui passare ogni volta tutti i dati necessari
> si rende scomodo. Cosi pensavo di poter sfruttare il potere
> dell'introspezione di Python.
>
> Ho dato una occhiata al modulo 'inspect' ma purtroppo ho solo trovato come
> accedere al caller, e in questo caso, non riesco ad ottenere uno stack
> precedente
> (probabilmente perchè effettivamente A() non è un caller di B() ma ne crea
> solo una istanza, mentre il metodo è chiamato nello scope globale).
>
> Come potrei risolvere?
> L'introspezione mi farebbe comodo, e sarebbe anche utile imparare questa
> cosetta :)
> Come sempre resto a disposizione per suggerimenti di ogni tipo.
>
Siccome la risposta mi sembra banale forse mi sfugge qualcosa:
class A(object):
def __init__(self):
self.b = B(self)
self.txt = 'Ciao'
class B(object):
def __init__(self,parent):
self.parent = parent
def saluta(self):
# accedere a self.txt della classe A
print parent.txt
Ho frainteso la tua domanda ?
G
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python