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