Asignando un atributo por nombre
Samuel
smonux en telefonica.net
Mar Dic 23 12:30:12 CET 2003
Pablo Barrera González wrote:
>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?
>
>Muchas gracias
>
>Pablo Barrera
>
>
Hola,
si te he entendido bien, quieres proteger el acceso a una variable de
forma "transparente". Creo
que esta entrada de la FAQ de Python es lo que necesitas:
http://www.python.org/doc/faq/programming.html#what-is-delegation
Es básicamente lo que intentabas hacer, pero accediendo a los datos a
través del diccionario:
self.__dict__[name] = value
Otra opción es usar property:
http://www.python.org/2.2/descrintro.html#property
Espero haber entendido lo que que querías, y que te sirva.
Saludos
Samuel
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es