El día 5 de septiembre de 2012 18:23, kausdiv <kaus...@gmail.com> escribió: > > El 05/09/2012 16:51, Oscar Carballal escribió: > > Tienes que reemplazar la copia de la variable global antes de modificar su > valor: > > ej: > > > def __init__(self): > global __conectado > __conectado = False > > Por otra parte espero que tengas un buen motivo para usar la declaración > 'global' en python, ya que (espero que nadie se me tire encima) declarar > globales en python es un poco absurdo: > http://stackoverflow.com/questions/146557/do-you-use-the-global-statement-in-python > > Un saludo, > Oscar Carballal > > > Pues el motivo es muy simple "Desconocimiento". Yo hacía lo de __conectado = > False en __init__ y despues en otro procedimiento no reconocía __conectado. > :-( > > En fin tengo que estudiar más. > llevo unos días.
Los atributos con doble subrayado son una especie de atributo privado, aunque no existe tal concepto en python. Para conseguir que se parezca, realiza un truco consistente en renombrar el atributo añadiendo el nombre de la clase ("name mangling"). Lo que para las instancias de la clase se ve como '__conectado', en realidad tiene un nombre como '_Telefono__conectado'. Evita las variables globales. El uso correcto de los atributos privados sería a través de la instancia: class Telefono(): def __init__(self): self.__conectado = False def prueba(self): if self.__conectado != True: print "ok conectado" else: print "NO conectado" -- Hyperreals *R: http://ch3m4.org/blog Quarks, bits y otras criaturas infinitesimales _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/