Python 3.x 使用mypy时定义二叉树时出错

Python 3.x 使用mypy时定义二叉树时出错,python-3.x,mypy,Python 3.x,Mypy,我使用的是Python3.5,我想使用它来启用静态类型检查。但我在尝试定义二叉树时出错: class BinaryTreeNode(object): def __init__(self, value, left: BinaryTreeNode=None, right:BinaryTreeNode=None): self.value = value self.left = left self.right = right 错误消息: Name

我使用的是Python3.5,我想使用它来启用静态类型检查。但我在尝试定义二叉树时出错:

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似乎无法使用类,对吗?

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

类二进制树节点(对象):
def uuu init uuuuu(self,value,左:'BinaryTreeNode'=None,右:'BinaryTreeNode'=None):
自我价值=价值
self.left=左
self.right=right
但是,这应该在较新版本的Mypy中修复。(您的代码与Mypy 0.2的工作原理相同。)