estilo en nobre de objetos

Arnau Sanchez arnau en ehas.org
Mie Nov 14 12:29:31 CET 2007


damufo escribió:

> privados (private property    _noun_with_leading_underscore    
> _is_updated)?
> Cuando defino los botones, cajas de texto, combos... deberían ser algo así?
> 
> self._nombre_objeto= wx.Button(self, label="Send Message")

Se diría que el botón de un GUI no necesita ser accesible desde fuera, 
así que sí, el atributo sería privado (más bien, de uso interno): 
"self._send_button", por ejemplo.

¿No te pareció interesante unificar los widgets como te comenté? En ese 
caso quedaría: self._widgets.send_button.

> Nota: La verdad es que esta forma no me gusta nada de nada.

Dices que no te gusta, ¿pero el qué? ¿que empiece por guión bajo? ¿las 
minúsculas? Todo depende de lo estricto que te pongas, pero ésta es una 
convención muy extendida. Un buen ejercicio es estudiar código 
"canónico", e ir empapándose de buenas prácticas, mira la salida de:

$ grep -r "self\._[a-z]" /usr/lib/python2.5

Verás la cantidad de veces que se usa en la librería oficial.

En otros lenguajes quizá sea sólo una cuestión de estilo, pero en Python 
y demás lenguajes con introspección potente, cómo nombras las variables 
es muy importante.

Por ejemplo: si en tu clase alguna vez utilizas "self.var1", 
implícitamente estarás exponiendo "var1", así que debería poder usarse, 
desde fuera, libremente (y puede esperarse que exista en versiones 
posteriores, con funcionalidad equivalente). Si, en cambio, lo llamas 
"self._var1" estarás diciendo: "En estos momentos existe un atributo 
llamado _var1, pero me reservo el derecho a cambiar desde su nombre, 
cómo funciona, o incluso quitarlo si me viene en gana; si lo usas 
externamente, es tu problema".

A diferencia de otros lenguajes Python no tiene "keywords" para definir 
lo que es público/privado/protegido; se confía en que los programadores 
sigan las convenciones establecidas.

Espero que sea de ayuda,

arnau

pd:
 > Por cierto no se como hago pero siempre me como alguna letra. Lo digo
 > por poner nobre en lugar de nombre en el asunto. En fin... un colleja
 > para mi.

Eso nos pasa a todos. Una extensión de corrección ortográfica en el 
cliente de correo (sea Thunderbird, Sylpheed, KMail, etc) es de gran 
ayuda para filtrar gazapos.
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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