Hasta ahora hemos trabajo con atributos o propiedades públicas, de manera que desde cualquier entorno se puede modificar este atributo. Para indicar que el atributo es privado se pone un guion bajo delante del nombre del atributo. Esto no es exclusivo, ya que no evita la modificación, pero al ver el guion bajo, se avisa al programador que se debe utilizar como privado.
Si se quiere evitar modificar el atributo, lo debemos definir con doble guion bajo. De esta manera, las asignaciones no funcionarán, aunque tampoco da error
class Persona:
def __init__(self, nombre, apellido, edad):
self._nombre = nombre
self.apellido = apellido
self.edad = edad
def mostrar_detalle(self):
print(f'Persona: {self._nombre} {self.apellido} {self.edad}')
p1 = Persona('Carlos', 'Gil', 28)
p1._nombre='Lara'
p1.mostrar_detalle() #Lara Gil 28
class Persona:
def __init__(self, nombre, apellido, edad):
self.__nombre = nombre
self.apellido = apellido
self.edad = edad
def mostrar_detalle(self):
print(f'Persona: {self.__nombre} {self.apellido} {self.edad}')
p1 = Persona('Carlos', 'Gil', 28)
p1.__nombre='Lara'
p1.mostrar_detalle() #Carlos Gil 28