In python 3 posso creare argomenti e restituire annotazioni di tipo. Esempio:mettendo la classe corrente come annotazione del tipo di ritorno
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
Il problema è che non può fare un'annotazione con tipo di ritorno della classe corrente (grafico), che non è ancora definita. Esempio:
class Graph:
def reverse(self) -> Graph:
pass
Questo codice va con l'errore
def reverse(self) -> Graph:
NameError: name 'Graph' is not defined
Queste annotazioni sono davvero utili sia per la documentazione e permettendo IDE di riconoscere argomento e tornare tipi => Abilita completamento automatico
UPD: Quindi quello che ho scoperto è che è impossibile o richiede alcuni hack che non mi piacciono, quindi ho deciso di usare solo def reverse (self) -> 'Graph':
che è comprensibile per documenta anche se infrange la regola. Lo svantaggio è che non funziona per il completamento automatico IDE.
Avete provato: 'def reverse (self) -> type (self)' – Ankur
possibile duplicato di [Perché il nome della classe contenitore non è riconosciuto come annotazione della funzione del valore di ritorno?] (Http: // stackoverflow. it/questions/15741887/why-is-the-name-of-the-contenenti-class-not-recognised-as-a-return-value-functio) – eryksun
Possibile duplicato di [Come specificare che il tipo restituito di un metodo è uguale alla classe stessa in python?] (https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-method-is- the-same-the-class-itsel) –