Come evitare le importazioni circolari in Python?

|

So che il problema delle importazioni circolari in Python è già emerso molte volte e ho letto queste discussioni. Il commento ripetuto più volte in queste discussioni è che un'importazione circolare è un segno di una cattiva progettazione e il codice dovrebbe essere riorganizzato per evitare l'importazione circolare.

Qualcuno potrebbe dirmi come evitare un'importazione circolare in questa situazione?: ho due classi e voglio che ogni classe abbia un costruttore (metodo) che prende un'istanza dell'altra classe e restituisce un'istanza della classe.

Più specificamente, una classe è mutevole e uno è immutabile. La classe immutabile è necessaria per l'hashing, il confronto e così via. Anche la classe mutevole è necessaria per fare le cose. Questo è simile a set e frozenset oa liste e tuple.

Potrei mettere entrambe le definizioni di classe nello stesso modulo. Ci sono altri suggerimenti?

Un esempio di giocattolo potrebbe essere la classe A che ha un attributo che è una lista e la classe B che ha un attributo che è una tupla. Quindi la classe A ha un metodo che prende un'istanza della classe B e restituisce un'istanza della classe A (convertendo la tupla in una lista) e allo stesso modo la classe B ha un metodo che prende un'istanza della classe A e restituisce un'istanza della classe B (convertendo l'elenco in una tupla).

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method