Bienvenido a nuestro sitio web, en este lugar vas a hallar la solucíon que andabas buscando.
Solución:
Usar un solo guión bajo prefix:
class _Internal:
...
Esta es la convención oficial de Python para símbolos ‘internos’; “from module import *” no importa objetos con guiones bajos.
Editar: referencia a la convención de guión bajo único
En breve:
-
No se puede hacer cumplir la privacidad. No hay clases/métodos/funciones privadas en Python. Al menos, no privacidad estricta como en otros lenguajes, como Java.
-
Solo puedes indicar/sugerir privacidad. Esto sigue una convención. La convención de Python para marcar una clase/función/método como privado es anteponer un _ (guion bajo). Por ejemplo,
def _myfunc()
oclass _MyClass:
. También puede crear pseudo-privacidad anteponiendo el método con dos guiones bajos (por ejemplo:__foo
). No puede acceder al método directamente, pero aún puede llamarlo a través de un especial prefix usando el nombre de clase (por ejemplo:_classname__foo
). Entonces, lo mejor que puede hacer es indicar/sugerir privacidad, no imponerla.
Python es como Perl en este sentido. Parafraseando una frase famosa sobre la privacidad del libro de Perl, la filosofía es que debes permanecer fuera de la sala de estar porque no fuiste invitado, no porque esté defendida con una escopeta.
Para más información:
- Variables privadas Documentación de Python
- ¿Por qué los métodos ‘privados’ de Python no son realmente privados? Pregunta de desbordamiento de pila 70528
Definir __all__
una lista de nombres que desea exportar (consulte la documentación).
__all__ = ['public_class'] # don't add here the 'implementation_class'
valoraciones y reseñas
Acuérdate de que puedes valorar este post si diste con la solución.