Como evitar importações circulares em Python?

|

Sei que a questão das importações circulares em python já surgiu muitas vezes antes e li essas discussões. O comentário que é feito repetidamente nessas discussões é que uma importação circular é sinal de um design ruim e o código deve ser reorganizado para evitar a importação circular.

Alguém poderia me dizer como evitar uma importação circular nesta situação?: Eu tenho duas classes e quero que cada classe tenha um construtor (método) que recebe uma instância da outra classe e retorna uma instância da classe.

Mais especificamente, uma classe é mutável e um é imutável. A classe imutável é necessária para hash, comparação e assim por diante. A classe mutável é necessária para fazer coisas também. Isso é semelhante a conjuntos e frozensets ou a listas e tuplas.

Eu poderia colocar as duas definições de classe no mesmo módulo. Existem outras sugestões?

Um exemplo de brinquedo seria a classe A que tem um atributo que é uma lista e a classe B que tem um atributo que é uma tupla. Então a classe A tem um método que recebe uma instância da classe B e retorna uma instância da classe A (convertendo a tupla em uma lista) e da mesma forma a classe B tem um método que recebe uma instância da classe A e retorna uma instância da classe B (convertendo a lista em uma 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