Auto-referencia o referencia directa de anotaciones de tipo en Python [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Sugerencias de tipo: resolver dependencia circular 1 respuestaEstoy tratando de descubrir cómo funciona la autorreferencia de tipos conanotaciones de tipo python3 - los documentos no especifican nada al respecto.
Como ejemplo:
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 genera el error:
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
Esto está usando Python 3.5.1