помещение текущего класса в качестве аннотации возвращаемого типа [дубликат]

На этот вопрос уже есть ответ здесь:

Как мне указать, что возвращаемый тип метода такой же, как и сам класс в 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.

Ответы на вопрос(2)

Ваш ответ на вопрос