Pregunta

En Python, funciones como str (), int (), float (), etc. se usan generalmente para realizar conversiones de tipos. Sin embargo, esto requiere que usted sepa en el momento del desarrollo a qué tipo desea convertir. Un problema secundario de algunos códigos Python que estoy tratando de escribir es el siguiente:

Dadas dos variables, foo y bar , encuentre el tipo de foo . (No se sabe en el momento del desarrollo, ya que este es un código genérico). Luego, intente convertir barra a cualquier tipo que sea foo . Si esto no se puede hacer, lance una excepción.

Por ejemplo, supongamos que llama a la función que hace este conv . Su firma se vería como

def conv(foo, bar) :
    # Do stuff.

Se llamaría algo así como:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
¿Fue útil?

Solución

Use foo .__ class__ para obtener el tipo de foo . Luego llámalo para convertir la barra al tipo de foo:

def conv(foo, bar) :
    return foo.__class__(bar)

Por supuesto, esto solo funciona si el tipo de foo tiene un constructor que sabe cómo convertir la barra.

Otros consejos

eso sería lo mejor:

type(foo)(bar)
type(foo)

es definitivamente el mejor, si desea marcar un tipo, entonces " escriba " es el mejor método, y estoy en python 2.7 - 3.2.2, type () funciona perfectamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top