类实例类型检查mypy python

问题描述 投票:0回答:1

我在两个不同的 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

进行分配)
python python-typing mypy
1个回答
2
投票

我想你想通过

--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:

允许对其进行类型检查。

© www.soinside.com 2019 - 2024. All rights reserved.