Domanda

In Python, funzioni come str (), int (), float (), ecc. sono generalmente utilizzate per eseguire conversioni di tipo. Tuttavia, questi richiedono di sapere in fase di sviluppo in quale tipo si desidera convertire. Un sottoproblema di alcuni codici Python che sto cercando di scrivere è il seguente:

Date due variabili, foo e bar , trova il tipo di foo . (Non è noto al momento dello sviluppo, poiché si tratta di un codice generico.) Quindi, provare a convertire bar in qualunque tipo foo sia. Se ciò non è possibile, genera un'eccezione.

Ad esempio, supponiamo che tu chiami la funzione che fa questo conv . La sua firma sarebbe simile a

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

Si chiamerebbe qualcosa del tipo:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
È stato utile?

Soluzione

Usa foo .__ class__ per ottenere il tipo di foo . Quindi chiamalo per convertire la barra nel tipo di pippo:

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

Naturalmente, funziona solo se il tipo di foo ha un costruttore che sa come convertire la barra.

Altri suggerimenti

sarebbe meglio:

type(foo)(bar)
type(foo)

è sicuramente il migliore, se vuoi controllare un tipo, allora " digita " è il metodo migliore e sono su python 2.7 - 3.2.2, type () funziona perfettamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top