Python-Reflexion und Typkonvertierung

7

In Python werden normalerweise Funktionen wie str (), int (), float () usw. verwendet, um Typkonvertierungen durchzuführen. 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:

Geben Sie für die beiden Variablen foo und bar den Typ foo an. (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, dass Sie die Funktion aufrufen, die dies tut conv . Seine Unterschrift würde aussehen wie

%Vor%

Es würde ungefähr so ​​heißen:

%Vor%     
dsimcha 07.03.2009, 17:15
quelle

3 Antworten

11

Verwenden Sie foo.__class__ , um den Typ von foo zu erhalten. Dann rufe es auf, um bar in den Typ von foo zu konvertieren:

%Vor%

Das funktioniert natürlich nur, wenn der Typ von foo einen Konstruktor hat, der weiß, wie man bar konvertiert.

    
oefe 07.03.2009, 17:21
quelle
16

das wäre das Beste:

%Vor%     
nosklo 07.03.2009 17:57
quelle
0
%Vor%

ist definitiv das beste, wenn Sie einen Typ prüfen möchten, dann ist "Typ" die beste Methode, und ich bin auf python 2.7 - 3.2.2, type() funktioniert perfekt.

    
Layth Spartan 05.12.2011 19:50
quelle