[pyar] Detectando llamadas con cantidad incorrectas de argumentos

Daniel Moisset dmoisset en machinalis.com
Vie Feb 27 18:35:46 ART 2015


ah, esto es muy bueno, algo así estaba buscando.

Igual, para que quede registro, me dije "pero ahora me tengo que
reprogramar toda la lógica de ver que coincidan... no estara hecho?". Pero
viendo la documentacion de getfullargspec, veo que menciona «Consider using
the new *Signature Object*
<https://docs.python.org/3/library/inspect.html#inspect-signature-object>
interface,
which provides a better way of introspecting functions.»
Eso parece ser justo lo que necesito, porque incluye el chequeo. Lo que
puedo hacer ahora es:

sig = inspect.signature(f)
try:
    sig.bind(*args, **kwargs)
except TypeError:
    loguear(info)
else:
    f(*args, **kwargs)

Eso me parece que sirve. Gracias a todos por apuntarme para este lado!

D.

2015-02-27 18:13 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:

> 2015-02-27 17:52 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:
>
> > if <f, args, kwargs no matchean en argumentos>:
> >     loguear(informacion_relevante)
> > else:
> >     f(*args, **kwargs)
> >
> > Se les ocurre alguna forma de lograr eso?
>
> ¿Tenés "con lo que estarías llamando a la función"? Con eso y con lo
> "que la función recibe" podés comparar y decidir.
>
> "Lo que la función recibe" lo sacás así:
>
> >>> def f(a, b, *args, c=3, **kwargs):
> ...   pass
> ...
> >>> import inspect
> >>> inspect.getfullargspec(f)
> FullArgSpec(args=['a', 'b'], varargs='args', varkw='kwargs',
> defaults=None, kwonlyargs=['c'], kwonlydefaults={'c': 3},
> annotations={})
>
> Slds.
>
> --
> .    Facundo
>
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/
> Twitter: @facundobatista
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Daniel F. Moisset - Technical Leader
www.machinalis.com
Skype: @dmoisset
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150227/fe6ee1a1/attachment.html>


More information about the pyar mailing list