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

Python 为什么isinstance()函数不起作用?,python,python-3.x,types,boolean,isinstance,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,这显然是一个布尔值。type函数做对了,但是为什么isinstance函数说arg是int?这是虫子吗 注意:我使用的是Python 3.8.5,因为bool对象是int对象,换句话说: 或者,换一种说法: &g

例如:

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

print(test())
将导致:

False, <class: 'bool', True>
arg变量为False,这显然是一个布尔值。type函数做对了,但是为什么isinstance函数说arg是int?这是虫子吗

注意:我使用的是Python 3.8.5,因为bool对象是int对象,换句话说:

或者,换一种说法:

>>> bool.mro()
[<class 'bool'>, <class 'int'>, <class 'object'>]
因为bool对象是int对象,换句话说:

或者,换一种说法:

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

因为issubclassbool,Int因为issubclassbool,Int那么我该怎么办?@TonyStark,如果您正在测试特定类型,则使用type而不是isinstance,即不考虑inheritance@Michael露丝,谢谢!那么我该怎么办?@TonyStark,如果您正在测试一个特定的类型,即不考虑inheritance@Michael露丝,谢谢!