Tengo una clase, pero cada método debe ser privado (aparte de la forma __init__
y __str__
). ¿Debo denotar cada método con un doble guión bajo, o se considera una mala práctica?
Tengo una clase, pero cada método debe ser privado (aparte de la forma __init__
y __str__
). ¿Debo denotar cada método con un doble guión bajo, o se considera una mala práctica?
Los verdaderos métodos privados, aquellos que no se pueden ver o usar desde fuera de una clase, no existen en Python. Lo que tenemos son convenciones que son meramente sugerencias para no tocar cosas que no deberías.
Lo más cercano a la privacidad es el cambio de nombre. Un atributo de MyClass nombrado se __some_attr
cambiará de nombre _MyClass__some_attr
internamente, lo que hace que sea un poco incómodo hacer referencia a él desde fuera de la clase. Esto rara vez se usa. Lo que la mayoría de la gente hace es simplemente prefijar un solo guión bajo ( _attr
) como una notación de que algo no se debe confiar y no es parte de la interfaz pública.
El uso de guiones bajos dobles antes y después del identificador, aunque no está prohibido, se considera reservado para los detalles del idioma interno (como los métodos 'mágicos'). No deberías andar __attr__
buscando nuevos s (a menos que estés pirateando al intérprete).
__some_attr
que no se hará referencia alguna fuera de la clase? ¿No estaría bien usar doble guión bajo?