busqueda por cualquier atributo

Josef Meile jmeile en hotmail.com
Mie Feb 16 12:54:02 CET 2005


> No se si es que no he entendido el problema, pero ¿No valdría esto?
> 
> --------------------------------------------------------------------
> 
> class Cliente:
>     def __init__(self, identificador, nombre, apellidos, **atrs):
>         self.identificador = identificador
>         self.nombre = nombre
>         self.apellidos = apellidos
>         for (nombre, valor) in atrs.items():
>             setattr(self, nombre, valor)
Creo que es mejor que la solución con diccionarios.

>     def comparar(self, **atrs):
>         "retorna True si el cliente cumple con los requisitos args"
>         for (campo, valor) in atrs.items():
>             if str(valor) not in str(getattr(self, campo)):
>                 return False
>         return True
Tiene el mismo problema que el código original. Si el atributo
que se va a comparar no existe en la clase, un key error sera
retornado. Por lo tanto, lo mejor es usar el getattr con un
valor por defecto:

getattr(self, campo, '')

Saludos,
Josef




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