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