J'essaie de comprendre comment fonctionne l'auto-référence des types avec python3's type annotations - les docs ne spécifient rien à ce sujet.Auto-référence des annotations de type en Python
À titre d'exemple:
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
Ce code génère l'erreur:
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
Ce utilise Python 3.5.1
Hmmm, 'typing' est disponible seulement de 3,5. Vérifiez [whatsnew de la version 3.5] (https://docs.python.org/3.5/whatsnew/3.5.html) – thefourtheye
@thefourtheye: J'ai édité la question. Je viens d'installer 3.5.1 et le problème existe toujours. La raison pour laquelle je l'ai eu à travailler avec 3.4 était parce que j'avais mypy installé – LiraNuna