Python - Variables privadas

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 23 puestos en Python (en relación al último mes)
Gráfica de Python

Variables privadas

Publicado por David (14 intervenciones) el 08/11/2016 10:57:05
Buenas, soy un programador Java que se esta pasando a Python y ando muy perdido. Quiero establecer unas variables a nivel de clase para que sean compartidas por todos los módulos, pero sin embargo no quiero que puedan ser accedidas desde fuera de la clase donde se definieron. Quería hacer las variables privadas, pero no veo forma de hacer eso en python, ¿alguien podría echarme una mano con eso?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Variables privadas

Publicado por xve (1646 intervenciones) el 08/11/2016 15:09:31
Hola David, para definir una variable privada, simplemente añade dos sub guiones a la variable...

1
self.__miVariable=10

Esa variable es únicamente visible dentro de la clase.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 23 puestos en Python (en relación al último mes)
Gráfica de Python

Variables privadas

Publicado por David (14 intervenciones) el 08/11/2016 15:56:32
Te pongo un ejemplo del código que estoy haciendo para comprender un poquito el funcionamiento de Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class ProcessObject:
    __RR = 0
    def b(self):
        self.__RR=5
        print("value: ", self.__RR)
 
    def c(self):
        print("final: ", self.__RR)
 
    def d(self):
        global __RR
        __RR = 3
        print("value: ", __RR)
 
    print(__RR)
 
proce = ProcessObject()
proce.b()
proce.c()
proce.d()
proce.c()

Con ese código yo puedo acceder a RR desde cualquier parte y me gustaría que solo pudiera ser accedida desde ProcessObject. He probado lo que me dices pero dice que 'self' no esta definido (si pongo self.RR = 0), pero si quito el 'self.' y lo dejo solo con '__RR' entonces si funciona bien, pero me genera otra duda: ¿si mediante __ le digo que sea privada, por qué tengo que ponerlo cada vez que quiera usarlo? ¿Realmente es obligatorio usar siempre self?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar