Размещение текущего класса в качестве аннотации типа возвращаемого значения [дубликат]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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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