我正在使用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在定义类之前无法使用类,对吧?
答案 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一样正常工作。)