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: -4Se 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"