我在两个不同的 python 模块中有以下两个类
class Node(object):
def __init__(self, data: int) -> None:
if data is not None:
self._index: int = data
def get_node_index(self) -> int:
if self._index is not None:
return self._index
和
from Graph import Node
class NodeTest(object):
def func(self):
n = Node(4)
print(n.get_node_index())
data: bool = n.get_node_index()
print(type(data))
if __name__ == '__main__':
a = A()
a.func()
当我在第二节课中运行 main 时,我得到以下输出
4
<class 'int'>
我不明白为什么 mypy 没有警告数据类型必须是
int
(如果我使用返回类型为 n.get_node_index()
的
int
进行分配)
--check-untyped-defs
到 mypy
例如,以下内容默认不会给出任何错误:
def foo():
a = 5
b: bool = a
但是当运行为
mypy --check-untyped-defs foo.py
时我得到:
赋值中的类型不兼容(表达式的类型为“int”,变量的类型为“bool”)
正如@Michael0x2a指出的那样,您还可以将
--disallow-untyped-defs
传递给 mypy
,这将导致它抱怨您的 NodeTest.func
未键入,因此不会被检查。 然后你想将其注释为:
def func(self) -> None:
允许对其进行类型检查。