Skip to content

Variables Clases

Python no tiene private real; son convenciones (+ name mangling).

PrefijoNombreEfectoEjemplo
_varProtegidoConvención: “uso interno”self._nombre
__varPrivadoRenombra a _Clase__varself.__nombre_Persona__nombre
sin _PúblicoAcceso normalself.nombre
class Persona:
def __init__(self, nombre):
self._nombre = nombre # no lo toques desde fuera (por favor)
p = Persona("Ana")
print(p._nombre) # funciona, pero es mala educación

Evita choques en herencia y acceso accidental. No es secreto absoluto.

class Persona:
def __init__(self, nombre):
self.__nombre = nombre
p = Persona("Luis")
# print(p.__nombre) # AttributeError
print(p._Persona__nombre) # Luis (mangling)

Más encapsulación: Getters/setters, Property.

Docs: clases — private.