bueno, refloto el hilo con otra duda, esta vez sobre la encapsulación
si tengo la clase Persona:
Código:
class Persona():
def __init__(self):
self.__nombre = ""
self.__apellido = ""
self.__dni = ""
def getNombre(self):
return self.__nombre
def setNombre(self, n):
self.__nombre = n
def getApellido(self):
return self.__apellido
def setApellido(self, a):
self.__apellido = a
def getDni(self):
return self.__nombre
def setDni(self, d):
self.__dni = d
nombre = property(getNombre, setNombre)
apellido = property(getApellido, setApellido)
dni = property(getDni, setDni)
y luego otro fichero con un main tal que:
Código:
from Persona import Persona
print "Hola mundo"
p= Persona()
p.nombre = "fulanito"
print p.nombre
raw_input()
lo que yo entendía, es que al ser los atributos de Persona privados, había que usar los getters y setters para acceder a ellos. y que poniendo las lineas:
Código:
nombre = property(getNombre, setNombre)
apellido = property(getApellido, setApellido)
dni = property(getDni, setDni)
le estábamos diciendo a python que use esos métodos para manipular esos atributos cuando acceda mediante
p.nombre, sin tener que poner
p.setNombre(). pero he estado haciendo pruebas, y si comento estas 3 lineas, sigo pudiendo modificar el nombre sin tener que usar
setNombre()
podéis echarme un cable con esto? que ya veis que estoy un poco liado
un saludo