Métodos y variables subrayadas en Python

Publicado el 27 enero 2020 por Daniel Rodríguez @analyticslane

En Python es habitual encontrar nombres de variables o métodos que comienzan o finalizan con uno o dos caracteres subrayado. Indicando que estos elementos son especiales. En esta entrada se va a explicar cual es el significado de los métodos y las variables subrayadas en Python.

Nombres que comienzan con un carácter de subrayado (_name)

Las variables y métodos cuyo nombre comienza con un subrayado indica que el elemento se ha escrito únicamente para uso interno en las clases. Esto es una convención que se define en PEP 8 y no afecta al comportamiento del programa. Siendo solamente una ayuda para los programadores a la hora de leer el código. Esto es así ya que, en Python, a diferencia de otros leguajes como C++ o Java, no existen diferencias entre las variables privadas o públicas.

Nombres que finalizan con un carácter de subrayado (name_)

Las palabras reservadas de Python no se pueden utilizar para dar nombre a una variable. Por ejemplo, no se puede llamar a una variable def o class. Si creemos que el mejor nombre para una variable es el de una palabra reservada en PEP 8 se recomienda usarla añadiendo el carácter subrayado al final de nombre. Así se pueden definir variables cuyo nombre sea def_ o class_. Al igual que el caso de los nombres que comienzan por subrayado esto es solamente una convención.

Nombres que comienzan con dos caracteres de subrayado (__name)

A diferencia de los casos vistos hasta ahora, los nombres que comienza por dos caracteres de subrayado si que son interpretados por Python. En este caso el intérprete de Python cambia el nombre del atributo para evitar conflictos de nombres en el caso de que se definan clases heredadas. Un proceso que conoce como "name mangling".

Nombres que comienzan y finalizan con dos caracteres de subrayado (__name__)

Los nombres que comienzan y finalizan con dos caracteres de subrayado están reservados para usos especiales en el leguaje. Por ejemplo, __init__ para los constructores de los objetos o __call__ para hacer que un objeto sea invocable. Métodos que en muchas ocasiones se llaman "métodos mágicos" ("magic methods"), aunque no exista ninguna magia detrás de ellos.

Lo mejor es evitar el uso de estos nombres para evitar problemas en futuras versiones de Python.

El cambio de nombre que hace el intérprete de Python para los nombres que comienzan con dos caracteres de subrayado no se realiza en este caso.

El carácter subrayado (_)

Finalmente, también es posible encontrar el carácter subrayado como nombre de una variable en Python. Un nombre que se usa por convención para indicar que la variable es temporal. Por ejemplo, en bucles for donde no se utiliza el valor sobre el que itera o al desempaquetar objetos en variables.

El carácter subrayado también se usa en las sesiones interactivas de Python para obtener el último resultado. Algo que puede ser útil en diferentes situaciones.

Conclusiones

En esta entrada se ha visto el significado de los nombres de métodos o variables subrayadas en Python. En algunos casos solamente son una convención para hacer un el código más legible. Aunque en otros casos si que son tenidos en cuenta por el interprete de Python.

Imágenes: Pixabay (sandid)