El error esta aquí:
Código python:
Ver original__nombre = property(getNombre, setNombre)
__apellido = property(getApellido, setApellido)
__dni = property(getDni, setDni)
Lo que pasa es que empieza a hacerse recursivo. Por que __nombre ya es una función dentro de la clase.
Si estas al nivel de la clase te darás cuenta que no necesitas usar self, pero cuando estas haciendo un método de la clase. Es necesario usar el self.
Cuando deberia de ser:
Código python:
Ver originalnombre = property(getNombre, setNombre)
apellido = property(getApellido, setApellido)
dni = property(getDni, setDni)
Desintoxícate de Java leyendo un rato:
python para todos o dive into python.
Y claro sigue posteando tus dudas.
Para ser sincero usaría "property" para cuando tenga que hacer procedimientos para obtener o ajustar algo.
Un ejemplo seria una clase empleado, donde dependiendo de lo que tengas en la variable puesto calcules el sueldo que es una propiedad privada. Al ajustar el puesto automáticamente cambias el sueldo. Para no estar calculando el sueldo cada vez que lo pidas.
Pero en esta clase Persona, seria perfectamente normal lo siguiente.
Código python:
Ver originalclass Persona(object):
"""Clase Persona"""
def __init__(self, nombre="", apellido="", dni=""):
"""Constructor"""
self.nombre = nombre
self.apellido = apellido
self.dni = dni
En resumen usa solo property para cuando tengas que hacer operaciones extras.
O para hacer variables que solo se puedan asignar pero no obtener.
O variables que se puedan obtener pero no asignar.