busqueda por cualquier atributo

Manuel frame_256 en yahoo.com.ar
Mie Feb 16 10:01:11 CET 2005


Hmm, interesante la validación por medio de conjuntos, voy a chequearlo.


> Una solución alternativa a la que te ha dado Josef sería validar los
> atributos que te llegan, pero que obligaría a pasarlos siempre por nombre:
>
> class Cliente:
> 	def __init__(self,**atrs):
> 		attrs_obligatorios=("nom","ape","ID")
> 		if not set(attrs)>set(attrs_obligatorios):
> 			raise KeyError
> 		self.atrs = atrs
>
>
>
> ...y si lo quieres más elegante, se podría utilizar decoradores para
> validar "contratos" en el paso de argumentos:
>
>
> def val_attrs( attrs_obligatorios ):
>    def deco(func):
>      def wrapper(self,**attrs):
>        sdiff=set(attrs_obligatorios)-set(attrs.keys())
>        if sdiff:
>          raise KeyError,list(sdiff)
>        return func(self,**attrs)
>      return wrapper
>    return deco
>
>
> class Cliente:
> 	@val_attrs( ("nom","ape","ID") )
> 	def __init__(self,**atrs):
> 		self.atrs = atrs
> ...
>
> _______________________________________________
> 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