为什么 isinstance() 函数不起作用?

时间:2021-05-03 07:40:24

标签: python python-3.x types boolean isinstance

例如:

def test(arg = False):
    return arg, type(arg), isinstance(arg, int)

print(test())

将导致:

False, <class: 'bool', True>

arg 变量是 False,它显然是一个 booleantype() 函数是正确的,但为什么 isinstance() 函数说 argint?这是一个错误吗?

注意:我使用的是 Python 3.8.5

1 个答案:

答案 0 :(得分:4)

因为 bool 对象是 int 对象,换句话说

>>> issubclass(bool, int)
True

或者换一种说法:

>>> bool.mro()
[<class 'bool'>, <class 'int'>, <class 'object'>]