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 に答える