[Python] Python e puntatori - non mi fucilate!
Pietro Battiston
toobaz a email.it
Mer 28 Gen 2009 12:57:33 CET
Ho bisogno di qualcosa di simile ad un puntatore, e prima che mi
insultiate vi spiego la mia situazione:
ho due moduli (in realtà sono ben più di due, e in una gerarchia più
complicata), a.py e b.py.
In a.py ho il seguente codice:
--------------------------------a.py---------------------------------
import b
parametro = valore
def cambia_il_valore_di_parametro(nuovo_valore):
global parametro
parametro = nuovo_valore
---------------------------------------------------------------------
in b.py devo ottenere il valore di "parametro"... che però può cambiare
nel tempo. Più precisamente, all'inizio è None, e ad un certo punto
viene settato (all'interno di una funzione in a, ovviamente come
"global"), e in b.py ho una funzione del tipo
----------------------------------b.py--------------------------------
if parametro:
fai questo, utilizzando il valore di parametro
else:
fai quest'altro
--------------------------------------------------------------------
Ora, il modo più semplice che mi viene in mente per fare questo è:
----------------------------a.py-----------------------------------
import b
parametro = [valore]
b.parametro = parametro
def cambia_il_valore_di_parametro(nuovo_valore):
parametro.pop()
parametro.append(nuovo_valore)
--------------------------------------------------------------------
----------------------------b.py-----------------------------------
def funzione_che_utilizza_il_parametro():
parametro_vero = parametro[0]
if parametro_vero:
fai questo, utilizzando parametro_vero
else:
fai questo
--------------------------------------------------------------------
Però mi sembra schifoso. Cercando su google ho visto che ctypes ha delle
cose chiamate puntatori, ma mi sembra di complicarmi la vita
inutilmente; in fondo l'ineleganza della lista la posso tranquillamente
eliminare con una classettina mia fatta apposta... ed è quello che farò,
se nessuno sa darmi quella soluzione geniale che sicuramente mi è
sfuggita...
grazie
Pietro
P.S: giusto per concretezza e per accettare consigli o critiche
distruttive sull'organizzazione in sé, a.py è uno script che fa partire
una gtk.Window, b sono varie librerie che devono essere in grado
talvolta di creare dei gtk.Dialog, e vorrei dar loro l'istanza della
gtk.Window da dare come "parent" nell'instanziazione del Dialog.
Maggiori informazioni sulla lista
Python