Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/10/2009, 14:45
Avatar de navarone86
navarone86
 
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: comenzando con python

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