python y referencias a métodos

Arnau Sanchez arnau en ehas.org
Mie Feb 14 23:09:08 CET 2007


camontuyu escribió:

> Todo esto viene por que desde una página web hace una llamada a una
> función del tipo (a grandes rasgos)
> 
> def set(id, campo, value):
>     u = Usuario(id)
>     if campo == 'nombre':
>        u.nombre = value
>     elif campo == 'apellidos':
>        u.apellidos = value
>     else:
>        error

Eso ya es otra cosa, ahora sí se ve qué quieres hacer. Puedes probar con:

def set(id, campo, value):
     u = Usuario(id)
     setattr(u, campo, value)

Faltaría comprobar que la clase Usuario realmente entiende el campo. Una forma 
muy elegante sería usando los slots de las nuevas clases (las que derivan de 
object):

 >>> class Usuario(object):
...     __slots__ = ["nombre", "apellido"]
...
 >>> u = Usuario()
 >>> u.nombre = "pedro"
 >>> u.desconocido = "aaaa"
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
AttributeError: 'Usuario' object has no attribute 'desconocido'




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