1

我正在使用 Python 3.5,我想使用mypy来启用静态类型检查。但是当我尝试定义二叉树时出现错误:

class BinaryTreeNode(object):
    def __init__(self, value, left: BinaryTreeNode=None, right:BinaryTreeNode=None):
        self.value = value
        self.left = left
        self.right = right

错误信息:

NameError: name 'BinaryTreeNode' is not defined

似乎 mypy 在定义类之前无法使用类,对吧?

4

1 回答 1

2

对于早期版本的 Mypy(就像您在写这个问题时可能使用的那个),这是正确的。为了在类的定义中使用类的名称作为类型,您必须将类的名称括在引号中,如下所示:

class BinaryTreeNode(object):
    def __init__(self, value, left: 'BinaryTreeNode'=None, right:'BinaryTreeNode'=None):
        self.value = value
        self.left = left
        self.right = right

但是,这应该在较新版本的 Mypy 中得到修复。(您的代码在 Mypy 0.2 中按原样工作。)

于 2016-03-02T23:21:27.367 回答