Asignando un atributo por nombre

Luis Iglesias luigli en yahoo.es
Mar Dic 23 12:23:14 CET 2003


 --- Pablo Barrera González <barrera en gsyc.escet.urjc.es> escribió: 
> Hola a todos
> 
> Llevo un par de días intentando hacer una cosa que al principio
> pensaba
> que era fácil pero ahora no sé si se puede hacer.
> 
> Tengo una serie de instancias que correrán en unos cuantos hilos. Uso
> cerrojos y condiciones para evitar que los datos se modifiquen mal.
> Lo
> que quiero es cambiar los atributos de una clase cerrando el cerrojo
> desde dentro de la clase y no desde el resto del programa, para
> simplificar lo demás. Lo que se me ha ocurrido es definir unos
> métodos
> como estos:
> 
> def get(self, name):
> 	return eval("self.%s")
> def set(self,name, value):
> 	eval("self.%s = %s", name, value)
> 
> El get funciona bien, pero con el set se queja ya que no puedo poner
> el
> igual dentro de la expresión a evaluar por eval. 
> 
> He estado buscando otras opciones, como conseguir una referencia del
> atributo que quiero cambiar pero no he tenido suerte. ¿Alguna idea? 

Echa un vistazo en el documento de novedades en Python 2.2 al punto 2.4
"Acceso a atributos". No es exactamente lo que estás comentando, pero
creo que puede ayudar.

Luis.

___________________________________________________
Yahoo! Messenger - Nueva versión GRATIS
Super Webcam, voz, caritas animadas, y más...
http://messenger.yahoo.es




Más información sobre la lista de distribución Python-es