¿Cómo evitar las importaciones circulares en Python?

|

Sé que el tema de las importaciones circulares en python ha surgido muchas veces antes y he leído estas discusiones. El comentario que se hace repetidamente en estas discusiones es que una importación circular es una señal de un mal diseño y el código debe reorganizarse para evitar la importación circular.

¿Alguien podría decirme cómo evitar una importación circular? en esta situación?: Tengo dos clases y quiero que cada clase tenga un constructor (método) que tome una instancia de la otra clase y devuelva una instancia de la clase.

Más específicamente, una clase es mutable y uno es inmutable. La clase inmutable es necesaria para hash, comparación, etc. La clase mutable también es necesaria para hacer cosas. Esto es similar a conjuntos y conjuntos congelados oa listas y tuplas.

Podría poner ambas definiciones de clase en el mismo módulo. ¿Hay alguna otra sugerencia?

Un ejemplo de juguete sería la clase A que tiene un atributo que es una lista y la clase B que tiene un atributo que es una tupla. Luego, la clase A tiene un método que toma una instancia de la clase B y devuelve una instancia de la clase A (convirtiendo la tupla en una lista) y, de manera similar, la clase B tiene un método que toma una instancia de la clase A y devuelve una instancia de la clase B. (convirtiendo la lista en 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