使用mypy

时间:2015-10-05 05:35:26

标签: python-3.x mypy

我正在使用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在定义类之前无法使用类,对吧?

1 个答案:

答案 0 :(得分: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一样正常工作。)