In Python 3 kann ich Argumente und Rückgabetyp Anmerkungen machen. Beispiel:putting aktuelle Klasse als Rückgabetyp Annotation
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
Das Problem ist, ich nicht eine Anmerkung mit Rückgabetyp der aktuellen Klasse (Grafik) machen kann, die noch nicht definiert ist. Beispiel:
class Graph:
def reverse(self) -> Graph:
pass
Dieser Code geht mit Fehler
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
Diese Anmerkungen wirklich nützlich sind, sowohl für die Dokumentation und ermöglicht IDE Argument zu erkennen und Rückgabetypen => zur automatischen Vervollständigung
UPD aktivieren: Also, was ich herausgefunden habe, ist entweder unmöglich oder erfordert einige Hacks, die ich nicht mag, also entschied ich mich, nur def reverse (self) -> 'Graph':
zu verwenden, was für documenta verständlich ist obwohl die Regel bricht. Der Nachteil ist, dass es nicht für die automatische Vervollständigung der IDE funktioniert.
Haben Sie versucht: 'def reverse (self) -> Typ (self)' – Ankur
möglich Duplikat von [Warum wird der Name der enthaltenden Klasse nicht als Annotation der Rückgabewertfunktion erkannt?] (Http: // stackoverflow. com/questions/15741887/why-ist-der-Name-der-enthaltenden-Klasse-nicht-erkannt-als-Rückgabewert-Funktion) – eryksun
Mögliche Duplikat von [Wie gebe ich an, dass der Rückgabetyp von eine Methode ist das gleiche wie die Klasse selbst in Python?] (https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-methodis- the-self-as-the-class-itsel) –