Pergunta

Em Python, funções como str (), int (), flutuador (), etc, são geralmente utilizados para efectuar conversões de tipo. No entanto, estes exigem que você sabe em tempo de desenvolvimento que tipo você deseja converter. A subproblema de algum código Python Eu estou tentando escrever é a seguinte:

Dado duas variáveis, foo e bar, encontrar o tipo de foo. (Não se sabe em tempo de desenvolvimento, pois este é o código genérico.) Em seguida, tentar converter bar para qualquer tipo foo é. Se isso não puder ser feito, lançar uma exceção.

Por exemplo, digamos que você chamar a função que faz isso conv. Sua assinatura seria parecido

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

Ele seria chamado de algo como:

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

Solução

Use foo.__class__ para obter o tipo de foo. Em seguida, chamá-lo para a barra de converter para o tipo de foo:

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

Claro, isso só funciona se o tipo de foo tem um construtor que sabe como converter bar.

Outras dicas

que seria melhor:

type(foo)(bar)
type(foo)

é definitivamente o melhor, se você quiser verificar um tipo, em seguida, "tipo" é o melhor método, e eu estou no python 2.7 - 3.2.2, type() funciona perfeitamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top