06.06 Python – Clases – Módulos y Clases

Prueba.py

from Persona import Persona

p=Persona('Javi',55)
print(f'Nombre: {p.nombre} : {p.edad}')
Persona.py

class Persona:
    def __init__(self, nombre, edad):
        self._nombre = nombre
        self._edad = edad
    @property
    def nombre(self):
        print("Obteniendo el nombre...")
        return self._nombre
    @nombre.setter
    def nombre(self, nuevo_nombre):
        print("Estableciendo el nombre...")
        self._nombre = nuevo_nombre
    @property
    def edad(self):
        print("Obteniendo la edad...")
        return self._edad
    @edad.setter
    def edad(self, nueva_edad):
        print("Estableciendo la edad...")
        if nueva_edad >= 0:
            self._edad = nueva_edad
        else:
            print("La edad no puede ser un número negativo.")

if __name__ == '__main__':
    # Crear un objeto de la clase Persona
    persona1 = Persona("Juan", 30)

    # Acceder al atributo nombre utilizando el método get
    print(persona1.nombre)  # Resultado: "Obteniendo el nombre..." "Juan"

    # Establecer un nuevo valor para el atributo nombre utilizando el método set
    persona1.nombre = "Pedro"  # Resultado: "Estableciendo el nombre..."

    # Intentar establecer una edad negativa
    persona1.edad = -5  # Resultado: "Estableciendo la edad..." "La edad no puede ser un número negativo.“
    persona1._edad = -4
    print(f'Edad: {persona1._edad}')  #Edad: -4

Se puede borrar el objeto de forma explicta, para ello utilizamos el método heredado __del__.

class Persona:
    def __init__(self, nombre, edad):
        self._nombre = nombre
        self._edad = edad
    @property
    def nombre(self):
        return self._nombre
    @nombre.setter
    def nombre(self, nuevo_nombre):
        self._nombre = nuevo_nombre
    @property
    def edad(self):
        return self._edad
    @edad.setter
    def edad(self, nueva_edad):
        if nueva_edad >= 0:
            self._edad = nueva_edad
        else:
            print("La edad no puede ser un número negativo.")

    def __del__(self):
        print(f'Persona: {self.nombre} destruido')

if __name__ == '__main__':
    persona1 = Persona("Juan", 30)
    print(persona1.nombre)  # Resultado: "Obteniendo el nombre..." "Juan"

Related Posts