[pyar] Consulta sobre chequeo de tipos

Claudio Freire klaussfreire en gmail.com
Mar Nov 18 02:20:31 ART 2014


2014-11-18 1:28 GMT-03:00 Cristian Cabrera <surrealcristian en gmail.com>:
> Podrían orientarme desde su experiencia, qué camino me conviene tomar?
>
> - Mantener el chequeo de tipos
> - Dar por hecho que los parámetros van a venir con los tipos que espero
> - Otro/s

Normalmente, lo pythónico es no chequear los tipos, y confiar en que
somos todos grandes. Cuando necesites garantizar que algo es por
ejemplo un entero, convertilo explícitamente a entero. Cualquier cosa
que implemente los métodos de casteo a números (__int__, __long__,
__float__) va a funcionar de esa manera.

Yo en su momento, cuando quise asegurarme de que ciertas funciones
importantes obtengan cosas del tipo correcto (en general interfaces de
RPC), me hice un sistema de decoradores del tipo:

@typed(cast(int), cast(int)|none, cast(float), float|none, listof(str))
def blabla(x, y, z, w, names):
   pass

El código era bastante extenso y lo hice para una empresa, así que no
estaría muy bueno de mi parte compartirlo, pero tranquilamente podría
reinventarlo (10 veces más copadamente seguro).

El tema es que ya no uso eso. En vez hago lo siguiente, que es
igualmente claro, aunque algo menos flexible y más verborrágico, pero
suficiente si no abusás de la práctica:

def blabla(x, y, z, w, names):
   x = int(x)
   y = int(y) if y is not None else None
   z = float(z)
   assert isinstance(w, (float, NoneType))


More information about the pyar mailing list