Kann mir jemand eine Erklärung geben, warum isinstance()
im folgenden Fall True zurückgibt? Ich habe False erwartet, als ich den Code geschrieben habe.Python vergleicht boolean und int mit isinstance
print isinstance(True, (float, int))
True
Meine Vermutung wäre, dass sein Python interne Unterklassen, als null und eins - wheter float oder int - beide zu bewerten, wenn sie als boolean verwendet, aber nicht wissen, den genauen Grund.
Was wäre der pythischste Weg, um eine solche Situation zu lösen? Ich könnte type()
verwenden, aber in den meisten Fällen gilt dies als weniger Python.
Es ist der zweite Fall. Das heißt, man muss sich um die Reihenfolge der Vergleiche dieser eingebauten Typen kümmern - verständlich angesichts der Vererbung, aber ziemlich ungewöhnlich für Python. – jake77