помещение текущего класса в качестве аннотации возвращаемого типа [дубликат]
На этот вопрос уже есть ответ здесь:
Как мне указать, что возвращаемый тип метода такой же, как и сам класс в python? 3 ответаВ 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, чтобы распознавать аргументы и возвращать типы => включить автозаполнение
UPD: Итак, я пришел к выводу, что это либо невозможно, либо требует некоторых хаков, которые мне не нравятся, поэтому я решил использовать простоdef reverse (self) -> 'Graph':
что понятно для документации, хотя нарушает правило. Недостатком является то, что он не работает для автозаполнения IDE.