python, сравнивающий логическое и int с использованием isinstance
Может кто-нибудь дать мне объяснение, почемуisinstance()
возвращает True в следующем случае? Я ожидал False при написании кода.
print isinstance(True, (float, int))
True
Я предполагаю, что внутреннее подклассирование его python, как ноль и единица - как float или int - оба оценивают, когда используются как булевы, но не знают точную причину.
Каков был бы самый питонический способ разрешения такой ситуации? Я мог бы использоватьtype()
но в большинстве случаев это считается менее питоническим.