Frage

In Python Funktionen wie str (), int (), Schwimmer () werden usw. eingesetzt Typkonvertierungen durchzuführen. Jedoch erfordern diese Sie zur Entwicklungszeit wissen, welche Art Sie konvertieren möchten. Ein Teilproblem einiger Python Code, den ich zu schreiben bin versucht, ist wie folgt:

zwei Variablen gegeben, foo und bar, die Art des foo finden. (Es ist nicht zum Zeitpunkt der Entwicklung bekannt, wie dieser generische Code.) Dann versuchen bar zu konvertieren wie auch immer geartete foo ist. Ist dies nicht getan werden kann, eine Ausnahme aus.

Zum Beispiel, sagen wir, Sie die Funktion aufrufen, die dieses conv tut. Seine Unterschrift würde wie folgt aussehen

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

Es würde heißen so etwas wie:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
War es hilfreich?

Lösung

Verwenden foo.__class__ die Art der foo zu bekommen. Dann nennen es bar auf die Art der foo zu konvertieren:

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

Natürlich funktioniert dies nur, wenn die Art des foo einen Konstruktor hat, der weiß, wie man bar konvertieren.

Andere Tipps

, das am besten wäre:

type(foo)(bar)
type(foo)

ist definitiv die beste, wenn Sie eine Art überprüfen wollen, dann „Typ“ ist die beste Methode, und ich bin auf python 2.7 - 3.2.2, type() funktioniert perfekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top