Я пытаюсь выяснить, как работает саморепликация типов с python3's type annotations - в документах ничего не говорится об этом.Самосознание аннотаций типа в Python
В качестве примера:
from typing import TypeVar, Optional, Generic
T = TypeVar('T')
class Node(Generic[T]):
left = None
right = None
value = None
def __init__(
self, value: Optional[T],
left: Optional[Node[T]]=None,
right: Optional[Node[T]]=None,
) -> None:
self.value = value
self.left = left
self.right = right
Этот код генерирует ошибку:
Traceback (most recent call last):
File "node.py", line 4, in <module>
class Node(Generic[T]):
File "node.py", line 12, in Node
right: Optional[Node[T]]=None,
NameError: name 'Node' is not defined
Это с помощью Python 3.5.1
Хммм, 'typing' доступен только с 3,5. Проверьте [whatsnew of 3.5 version] (https://docs.python.org/3.5/whatsnew/3.5.html) – thefourtheye
@thefourtheye: Я редактировал вопрос. Я только что установил 3.5.1, и проблема все еще существует. Причина, по которой я работал с 3.4, заключалась в том, что у меня установлен mypy – LiraNuna