Variables Privadas
En Python, las variables privadas son variables que están destinadas a ser utilizadas solo dentro de la clase en la que se definen, y no por código externo. Las variables privadas no son directamente accesibles desde fuera de la clase.
Para definir una variable privada en la clase Circle
, puedes utilizar el prefijo de doble guion bajo (__
) seguido del nombre de la variable. Por ejemplo:
class Circle:
def __init__(self, radius):
self.__radius = radius
Esto define una variable privada __radius
en la clase Circle
.
Las variables privadas están destinadas a ser utilizadas solo dentro de la clase en la que se definen. No son directamente accesibles desde fuera de la clase. Por ejemplo, si intentas acceder a la variable __radius
desde fuera de la clase Circle
, obtendrás un error:
circle1 = Circle(5)
print(circle1.__radius) ## Esto generará un AttributeError
Las variables privadas son útiles para encapsular datos dentro de una clase y limitar la capacidad del código externo para modificarlos. Sin embargo, es importante tener en cuenta que las variables privadas no son realmente privadas en Python y aún se pueden acceder desde fuera de la clase utilizando "name mangling" (desfiguración de nombres).
La desfiguración de nombres es una técnica que consiste en agregar un prefijo especial al nombre de la variable para dificultar su acceso desde fuera de la clase.
Por ejemplo, la variable __radius
aún se puede acceder desde fuera de la clase Circle
utilizando la siguiente sintaxis:
print(circle1._Circle__radius) ## Esto imprimirá 5
Sin embargo, esto no se considera una buena práctica de programación y debe evitarse.
En su lugar, debes utilizar variables privadas solo dentro de la clase en la que se definen y proporcionar métodos públicos para acceder o modificar los datos si es necesario.
Aquí tienes un ejemplo de una clase Circle
con una variable privada __radius
y métodos públicos para acceder y modificar el radio:
class Circle:
def __init__(self, radius):
self.__radius = radius
def get_radius(self):
return self.__radius
def set_radius(self, radius):
self.__radius = radius
Para acceder al radio de un objeto Circle
, puedes utilizar el método get_radius
:
circle1 = Circle(5)
print(circle1.get_radius()) ## imprime 5
Para modificar el radio de un objeto Circle
, puedes utilizar el método set_radius
:
circle1.set_radius(10)
print(circle1.get_radius()) ## imprime 10