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

Программы на Python
Anonymous
Размещение текущего класса в качестве аннотации типа возвращаемого значения [дубликат]

Сообщение Anonymous »

В 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:
Итак Я пришел к выводу, что это либо невозможно, либо требует некоторых хаков, которые мне не нравятся, поэтому я решил использовать просто defverse (self) -> 'Graph':
что понятно для документации, хотя нарушает правило. Обратной стороной является то, что он не работает для автозаполнения IDE.

Подробнее здесь: https://stackoverflow.com/questions/158 ... annotation

Вернуться в «Python»