UnboundLocalError: local variable 'UI_curses' referenced before assignment

Fernando Canizo conan en lugmen.org.ar
Vie Sep 9 04:02:23 CEST 2005


El 08/sep/2005 a las 16:12 -0300, Harpo me decía:
> > Esto de las variables de clase y de instancia lo saqué del siguiente
> > url:
> > http://www.ibiblio.org/g2swap/byteofpython/read/class-and-object-vars.html
> 
> 
> Yo siempre que use variables de instancias use self.X para
> referenciarlas dentro del metodo. Vi el ejemplo que posteaste del libro
> byteofpython. 
> 
> Encontre algunos  le tira el mismo error
> http://www.daniweb.com/techtalkforums/thread31501.html
> 
> No esta del todo claro...

Definitivamente algo anda mal con las variables de clase, el código
que mandé antes funciona de la siguiente manera:
======================================================================
def highlight_previous(self):
	UI_curses.listwin.addstr(UI_curses.y, 0, self.list[UI_curses.y],\
		curses.A_NORMAL)
	if UI_curses.y == 0:
		UI_curses.y = self.list.__len__() - 1
	else:
		UI_curses.y -= 1
	UI_curses.listwin.addstr(UI_curses.y, 0, self.list[UI_curses.y],\
		curses.A_REVERSE)
	UI_curses.listwin.refresh()
======================================================================

Aclaraciones: tanto 'list' como 'y' (list no estaba en el código
anterior) son variables de clase, definidas en __init__ de la misma
manera (sólo que una es una lista y la otra es un entero).

Cuando highlight_previous recibía como parámetro la lista el código
explotaba, por eso lo agregué a la clase.

Si pongo todas las referencias a variables de clases con 'UI_curses' o
con 'self' explota. En cambio, mezclado como está ahora funciona,
fíjense que 'listwin' e 'y' las accedo con el prefijo 'UI_curses',
pero a 'list' la debo acceder con 'self' sino explota. (?)

Realmente no lo entiendo. Pero ahí quedó andando, no lo toques!

-- 
Fernando Canizo - http://www.lugmen.org.ar/~conan/
Creditor, n.:
	A man who has a better memory than a debtor.




Más información sobre la lista de distribución Python-es