Sé que los atributos de la clase que se declaran con el subrayado doble __
prefijo pueden o no estar visibles fuera de la definición de la clase. Como todavía podemos acceder a esos atributos por object._className__attrName
.Ocultamiento de datos en Python Clase
class A:
def __init__(self):
self.a = 1
self.b = 2
----
----
self.z = 26
self.catch = 100
ahora para proteger a todos los atributos excepto para el catch
, tengo que declarar con doble subrayado que es bastante desordenado. ¿Hay alguna manera de decir en la definición de mi clase que solo se puede acceder al self.catch
fuera de la clase?
Disculpas si se responde en otro lugar o se menciona anteriormente.
No. Sin embargo, a menos que sea realmente paranoico, el hecho de que alguien * pueda * acceder a un objeto usando 'object._className__attrName' no es un gran problema. Realmente solo quieres evitar que las personas accedan accidentalmente a las variables que no deberían cuando usas tu código. La ofuscación logra ese objetivo. – Chris
posible duplicado de [¿Python tiene variables 'privadas' en las clases?] (Http://stackoverflow.com/questions/1641219/does-python-have-private-variables-in-classes) –
@ BjörnPollex, esto no es así t lo que está pidiendo. Quiere la necesidad de un "operador" explícito "público", no lo contrario. –