In Python werden normalerweise Funktionen wie str(), int(), float() usw. zum Ausführen von Typkonvertierungen verwendet. Diese erfordern jedoch, dass Sie zur Entwicklungszeit wissen, in welchen Typ Sie konvertieren möchten. Ein Teilproblem von etwas Python-Code, den ich versuche zu schreiben, ist wie folgt:Python-Reflexion und Typkonvertierung
Gegeben zwei Variablen, foo
und bar
, finden Sie den Typ foo
. (Es ist zur Entwicklungszeit nicht bekannt, da dies generischer Code ist.) Versuchen Sie dann, bar
in den Typ foo
zu konvertieren. Wenn dies nicht möglich ist, werfen Sie eine Ausnahme aus.
Nehmen wir zum Beispiel an, Sie rufen die Funktion, die dies tut conv
. Seine Unterschrift würde aussehen wie
def conv(foo, bar) :
# Do stuff.
es so etwas wie nennen würde:
result = conv(3.14, "2.718") # result is now 2.718, as a float.
Beeindruckend. Ich hätte nie gedacht, dass es so unglaublich einfach wäre. Auch überraschend (ich bin neu in Python und gewohnt, näher an den Metallsprachen) ist, dass es mit Builtins funktioniert. – dsimcha
Teilweise falsch. foo .__ class__ ist nur der Typ von foo, wenn foo ein neues Objekt ist. Ansonsten ist es nur die Klasse. –
Nur falsch insofern, als ich "type" sagte, wenn Klasse genauer wäre. Aber er braucht die Klasse für diese Konvertierung. Und in Python 3 ist der Unterschied sowieso weg. – oefe