x = True
print(isinstance(x, int))
False
. В Python bool
является подклассом int
, но isinstance(x, int)
проверяет, является ли x
экземпляром непосредственно класса int
, а не его подкласса. Для проверки, что x
является либо экземпляром класса int
, либо его подкласса, нужно использовать issubclass(type(x), int)
.
Вопрос: Что выведет следующий код?
x = True
print(isinstance(x, int))
Ответ: True
Объяснение:
В Python, логический тип данных bool
является подклассом целочисленного типа int
. Значение True
эквивалентно 1, а False
эквивалентно 0.
Функция isinstance(object, classinfo)
проверяет, является ли object
экземпляром класса classinfo
или экземпляром подкласса classinfo
. В данном случае, x
(которое равно True
) является экземпляром подкласса int
, поэтому функция возвращает True
.
Это поведение может быть неочевидным для разработчиков, переходящих из других языков программирования, где логический тип является отдельным и не связан с целочисленным типом.