Saltar al contenido

Clase “privada” (implementación) en Python

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:

  1. 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.

  2. 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() o class _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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *