En python se nombra una función o variable privada del módulo _foo
. Si es privado para una clase, son nombres __foo
. La mecánica detrás de cómo funcionan estos trabajos es diferente, sin embargo, eso es de poca relevancia para la pregunta.
¿Por qué durante el diseño del lenguaje Python se eligieron los caracteres de subrayado doble para los miembros privados de la clase? ¿Por qué no subrayar solo, como para el módulo privado? ¿Por qué no algún otro personaje que sea más visible? (Diferenciar entre _ y __ es difícil).
Estoy seguro de que hay algo de historia aquí, pero tengo problemas para encontrarlo, porque todo lo que encuentro son tutoriales que me dicen lo que significa, en lugar de por qué es así.
Respuestas:
La Propuesta de mejora de Python (PEP) 8 explica el significado previsto detrás de los nombres de subrayado simple y doble, entre otras convenciones. Al igual que muchos de los primeros PEP, representa las preferencias de Guido van Rossum, y como el Dictador benévolo para la vida de Python reconoció, sus preferencias generalmente son seguidas por la comunidad de Python.
El uso de guiones bajos dobles para indicar palabras "mágicas" se remonta al menos al preprocesador C, que utilizó esa convención a partir de la década de 1970 ( p . Ej .
__FILE__
,__LINE__
). Lo hizo porque no había símbolos que estuvieran fuera del alcance del preprocesador, por lo que un patrón de nomenclatura rara vez utilizado (múltiples guiones bajos y mayúsculas) prácticamente garantizaba la falta de conflictos.fuente