<div dir="ltr"><div>Ciao a tutti,<br><br></div><div>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.<br><br></div><div>Ho cercato di costruire un esempio (il piu' piccolo possibile e che trovate in fondo alla mail) che presentasse la problematica.<br><br></div><div>In pratica dopo aver lanciato il <b>main.py</b> il programma va in 
<b>ImportError

</b>nel momento in cui cerca di fare l'importazione 
 '<b>from </b><i><b>Cassetto import CCassetto</b>'</i>

contenuta nel file <b>Oggetto.py</b>.<br><br></div><div>L'importazione in questione la faccio solamente allo scopo di documentare il metodo <b>getCassetto()</b> della classe <b>COggetto</b>.<br><br></div><div>Cosa sbaglio? Uso male la tecnica delle Function Annotations?<br><br><br>


</div><div>Un grazie anticipato a chi mi puo' dare dei suggerimenti per risolvere/aggirare il problema.<br></div><div><br><br><br><br></div><div>di seguto il messaggio di errore:<br></div><div><br><br></div><div><i>C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\venv\Scripts\python.exe C:/Users/Federico/Dropbox/Lavoro/Prove/Prova/main.py<br>Traceback (most recent call last):<br>  File "C:/Users/Federico/Dropbox/Lavoro/Prove/Prova/main.py", line 1, in <module><br>    from Cassetto import CCassetto<br>  File "C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\Cassetto.py", line 1, in <module><br>    from Oggetto import COggetto<br>  File "C:\Users\Federico\Dropbox\Lavoro\Prove\Prova\Oggetto.py", line 2, in <module><br>    from Cassetto import CCassetto<br>ImportError: cannot import name 'CCassetto'</i><br><br><br><br></div><b>Main.py</b><br><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"Courier New""><span style="color:rgb(204,120,50)">from </span>Cassetto <span style="color:rgb(204,120,50)">import </span>CCassetto<br><span style="color:rgb(204,120,50)">from </span>typing <span style="color:rgb(204,120,50)">import </span>List<br><br><span style="color:rgb(204,120,50)">class </span>CScrivania:<br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(178,0,178)">__init__</span>(<span style="color:rgb(148,85,141)">self</span><span style="color:rgb(204,120,50)">, </span>dCassetti):<br>      <span style="color:rgb(148,85,141)">self</span>.dCassetti = {}<br>      <span style="color:rgb(128,128,128)">#<br></span><span style="color:rgb(128,128,128)">      </span><span style="color:rgb(204,120,50)">for </span>sCassettoNome <span style="color:rgb(204,120,50)">in </span>dCassetti:<br>         <span style="color:rgb(148,85,141)">self</span>.dCassetti[sCassettoNome] = CCassetto(sCassettoNome<span style="color:rgb(204,120,50)">, </span>dCassetti[sCassettoNome])<br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(255,198,109)">getlCassetti</span>(<span style="color:rgb(148,85,141)">self</span>) -> List[CCassetto]:<br>      <span style="color:rgb(204,120,50)">return </span><span style="color:rgb(136,136,198)">list</span>(<span style="color:rgb(148,85,141)">self</span>.dCassetti.values())<br><br><span style="color:rgb(204,120,50)">if </span>__name__ == <span style="color:rgb(106,135,89)">'__main__'</span>:<br>   dCassetti = {<span style="color:rgb(106,135,89)">"Cassetto1"</span>: [<span style="color:rgb(106,135,89)">"penna"</span>]<span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">"Cassetto2"</span>: [<span style="color:rgb(106,135,89)">"gomma"</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(106,135,89)">"cancelletto"</span>]}<br>   oScrivania = CScrivania(dCassetti)</pre><br><div><br><b>Cassetto.py</b><br></div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"Courier New""><span style="color:rgb(204,120,50)">from </span>Oggetto <span style="color:rgb(204,120,50)">import </span>COggetto<br><span style="color:rgb(204,120,50)">from </span>typing <span style="color:rgb(204,120,50)">import </span>List<br><br><span style="color:rgb(204,120,50)">class </span>CCassetto:<br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(178,0,178)">__init__</span>(<span style="color:rgb(148,85,141)">self</span><span style="color:rgb(204,120,50)">, </span>Nome<span style="color:rgb(204,120,50)">, </span>lOggettiNomi):<br>      <span style="color:rgb(148,85,141)">self</span>.Nome = Nome<br>      <span style="color:rgb(148,85,141)">self</span>.lOggetti = []<br>      <span style="color:rgb(204,120,50)">for </span>sOggettoNome <span style="color:rgb(204,120,50)">in </span>lOggettiNomi:<br>         <span style="color:rgb(148,85,141)">self</span>.lOggetti.append(COggetto(<span style="color:rgb(170,73,38)">pCassetto</span>=<span style="color:rgb(148,85,141)">self</span><span style="color:rgb(204,120,50)">, </span><span style="color:rgb(170,73,38)">Nome</span>=sOggettoNome))<br><br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(255,198,109)">getlOggetti</span>(<span style="color:rgb(148,85,141)">self</span>) -> List[COggetto]:<br>      <span style="color:rgb(204,120,50)">return </span><span style="color:rgb(148,85,141)">self</span>.lOggetti</pre><br></div><div><b>Cassetto.py<br></b><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"Courier New""><span style="color:rgb(204,120,50)">from </span>typing <span style="color:rgb(204,120,50)">import </span>List<br><span style="color:rgb(204,120,50)">from </span>Cassetto <span style="color:rgb(204,120,50)">import </span>CCassetto <span style="color:rgb(128,128,128)"># questa importazione è fatta solo per la parte descrittiva del metodo getCassetto() nella classe 'COggetto'<br></span><span style="color:rgb(128,128,128)"><br></span><span style="color:rgb(204,120,50)">class </span>COggetto:<br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(178,0,178)">__init__</span>(<span style="color:rgb(148,85,141)">self</span><span style="color:rgb(204,120,50)">, </span>*<span style="color:rgb(204,120,50)">, </span>pCassetto<span style="color:rgb(204,120,50)">, </span>Nome):<br>      <span style="color:rgb(148,85,141)">self</span>.pCassetto = pCassetto<br>      <span style="color:rgb(148,85,141)">self</span>.Nome = Nome<br><br>   <span style="color:rgb(204,120,50)">def </span><span style="color:rgb(255,198,109)">getCassetto</span>(<span style="color:rgb(148,85,141)">self</span>) -> CCassetto:<br>      <span style="color:rgb(204,120,50)">return </span><span style="color:rgb(148,85,141)">self</span>.pCassetto</pre><br><br><br></div></div>