Ciao a tutti, ho un problema di importazione incrociata che mi si è presentato nel momento in cui ho iniziato ad inserire le 'annotations' sul valore di ritorno dei metodi delle mie classi.
Ho cercato di costruire un esempio (il piu' piccolo possibile e che trovate in fondo alla mail) che presentasse la problematica. In pratica dopo aver lanciato il *main.py* il programma va in *ImportError *nel momento in cui cerca di fare l'importazione '*from **Cassetto import CCassetto'* contenuta nel file *Oggetto.py*. L'importazione in questione la faccio solamente allo scopo di documentare il metodo *getCassetto()* della classe *COggetto*. Cosa sbaglio? Uso male la tecnica delle Function Annotations? Un grazie anticipato a chi mi puo' dare dei suggerimenti per risolvere/aggirare il problema. di seguto il messaggio di errore: *C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\venv\Scripts\python.exe C:/Users/Federico/Dropbox/Lavoro/Prove/Prova/main.pyTraceback (most recent call last): File "C:/Users/Federico/Dropbox/Lavoro/Prove/Prova/main.py", line 1, in <module> from Cassetto import CCassetto File "C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\Cassetto.py", line 1, in <module> from Oggetto import COggetto File "C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\Oggetto.py", line 2, in <module> from Cassetto import CCassettoImportError: cannot import name 'CCassetto'* *Main.py* from Cassetto import CCassetto from typing import List class CScrivania: def __init__(self, dCassetti): self.dCassetti = {} # for sCassettoNome in dCassetti: self.dCassetti[sCassettoNome] = CCassetto(sCassettoNome, dCassetti[sCassettoNome]) def getlCassetti(self) -> List[CCassetto]: return list(self.dCassetti.values()) if __name__ == '__main__': dCassetti = {"Cassetto1": ["penna"], "Cassetto2": ["gomma", "cancelletto"]} oScrivania = CScrivania(dCassetti) *Cassetto.py* from Oggetto import COggetto from typing import List class CCassetto: def __init__(self, Nome, lOggettiNomi): self.Nome = Nome self.lOggetti = [] for sOggettoNome in lOggettiNomi: self.lOggetti.append(COggetto(pCassetto=self, Nome=sOggettoNome)) def getlOggetti(self) -> List[COggetto]: return self.lOggetti *Cassetto.py* from typing import List from Cassetto import CCassetto # questa importazione è fatta solo per la parte descrittiva del metodo getCassetto() nella classe 'COggetto' class COggetto: def __init__(self, *, pCassetto, Nome): self.pCassetto = pCassetto self.Nome = Nome def getCassetto(self) -> CCassetto: return self.pCassetto
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python