[Python] Introspezione - Ottenere implicitamente una variabile della classe parent

lex mlist lexmlist a gmail.com
Dom 13 Mar 2011 01:36:09 CET


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.

Saluti.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110313/0908f6d7/attachment.html>


Maggiori informazioni sulla lista Python