В python 3 я могу создавать аргументы и возвращать аннотации типа. Пример:
class Graph:
def __init__(self, V: int, E: int, edges: list):
pass
@classmethod
def fromfile(cls, readobj: type(sys.stdin)):
pass
def V(self) -> int:
pass
def E(self) -> int:
pass
Проблема в том, что я не могу сделать аннотацию с типом возвращаемого значения текущего класса (Graph), который еще не определен. Пример:
class Graph:
def reverse(self) -> Graph:
pass
Этот код идет с ошибкой
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
Эти аннотации действительно полезны как для документирования, так и для IDE для распознавания аргументов и возвращаемых типов = > enable autocomplete
UPD:
Так что я пришел, это либо невозможно, либо требует некоторых хаков, которые мне не нравятся, поэтому я решил использовать только def reverse (self) -> 'Graph':
что понятно для документации, но нарушает правило. Недостатком является то, что он не работает для автозаполнения IDE.