Читать книгу Python a fondo - Óscar Ramírez Jiménez - Страница 31
1.5.6 Convención de nombres
ОглавлениеLa convención de nombres establece cómo deben de nombrarse los identificadores de cada parte del lenguaje (variables, funciones, nombres de fichero, clases, etc.). PEP-8 define también las reglas para nombrar el código Python.
Antes de pasar a las reglas se exponen las convenciones más usadas:
• CamelCase: se construye uniendo palabras clave una detrás de otra, pero utilizando la primera letra de cada palabra en mayúscula. Su nombre hace referencia a que el resultado final se asemeja a la joroba de los camellos.
• snake_case: se construye uniendo las palabras con una barra baja (_) entre ellas.
• SCREAMING_SNAKE_CASE: se construye de forma similar a la snake_case, pero usa todos los caracteres en su forma mayúscula.
• Mayúsculas o minúsculas: son palabras en las que todas las letras son de uno u otro formato.
A continuación, se muestra cómo se usan estas convenciones de nombres en Python:
• Los nombres deberían estar definidos por el uso que se vaya a hacer de ellos y no por la implementación interna.
• Si un proyecto ya tiene una convención de nombres establecida, se mantendrá, dado que no hay que romper la consistencia del proyecto por seguir la guía de estilos.
• Para definir que un objeto está protegido se añade un carácter "_" como prefijo del nombre, dado que al hacer una importación general (utilizando el carácter *) se omiten los nombres escritos de esta forma.
• Los nombres que terminan con el carácter "_" se utilizan para evitar conflictos con palabras reservadas como class, def, if, etc.
• Cuando un nombre comienza por doble "_" (por ejemplo: __foo) dentro de cualquier clase (por ejemplo, Bar), se trata de manera diferente, dado que el compilador lo cambiará internamente por _<nombre_clase>__<nombre> (_Bar__foo en el ejemplo), lo que se conoce como Python's mangling rules y evita colisiones de nombres. Este método se asemeja a hacer un objeto privado, aunque realmente se puede acceder a él si se conocen las reglas, las clases y el nombre de la función. En cualquier caso, se recomienda encarecidamente no acceder a estos métodos utilizando este tipo de nombres.
• Si el nombre de la función comienza y termina con doble "_", se considera un método mágico y se recomienda que no se inventen nuevos nombres, sino que se usen los disponibles en la documentación.
• Para nombrar paquetes o módulos se utilizarán nombres en minúsculas o snake_case, intentando que sean lo más cortos posible.
• Para los nombres de las clases y los tipos de variables se usa CamelCase.
• El primer parámetro para los métodos de instancias y para los métodos de clase será self y cls, respectivamente.
• Para los nombres de las funciones se utilizará snake_case. Prefijo con un solo "_" si la función es local al módulo y prefijado con 2 caracteres "_" solo para evitar colisiones con la herencia al hacer uso de las Python's mangling rules.
• Para las constantes se hará uso de las mayúsculas o de SCREAMING_SNAKE_CASE.