Auto-referência ou referência direta de anotações de tipo em Python [duplicado]

Esta pergunta já tem uma resposta aqui:

Dicas de tipo: resolver dependência circular 1 resposta

Estou tentando descobrir como a auto-referência de tipos funcionaanotações de tipo de python3 - os documentos não especificam nada sobre isso.

Como um exemplo:

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

Este código gera o erro:

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

Isso está usando o Python 3.5.1

questionAnswers(1)

yourAnswerToTheQuestion