ahn*_*kle 4 python integer boolean mypy
我正在尝试使用mypy检查Python 3项目。在下面的示例中,我希望mypy将类的构造标记MyClass为错误,但事实并非如此。
class MyClass:
def __init__(self, i:int) -> None:
pass
obj = MyClass(False)
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?即解释为什么mypy不报告错误?
这是因为-不幸的是!— Python中的布尔值是整数。与中一样,bool是的子类int:
In [1]: issubclass(bool, int)
Out[1]: True
Run Code Online (Sandbox Code Playgroud)
因此,代码进行类型检查,并且False是带有value的有效整数0。