python vergleicht boolean und int mit isinstance

Kann mir jemand eine Erklärung geben, warumisinstance() gibt im folgenden Fall True zurück? Ich habe Falsch erwartet, als ich den Code geschrieben habe.

print isinstance(True, (float, int))
True

Meine Vermutung wäre, dass die interne Unterklasse des Pythons als null und eins - ob float oder int - ausgewertet wird, wenn sie als boolescher Wert verwendet wird, ohne den genauen Grund zu kennen.

Was wäre der pythonischste Weg, um eine solche Situation zu lösen? Ich könnte benutzentype() aber in den meisten Fällen wird dies als weniger pythonisch angesehen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage