Как избежать циклического импорта в Python?

|

Я знаю, что проблема циклического импорта в python поднималась много раз, и я читал эти обсуждения. Комментарий, который неоднократно звучал в этих обсуждениях, заключается в том, что циклический импорт является признаком плохого дизайна, и код должен быть реорганизован, чтобы избежать циклического импорта.

Может ли кто-нибудь сказать мне, как избежать циклического импорта в этой ситуации?: У меня есть два класса, и я хочу, чтобы каждый класс имел конструктор (метод), который берет экземпляр другого класса и возвращает экземпляр класса.

Более конкретно, один класс изменчивый и один неизменный. Неизменяемый класс нужен для хеширования, сравнения и т.д. Изменяемый класс тоже нужен, чтобы что-то делать. Это похоже на наборы и замороженные наборы или на списки и кортежи.

Я мог бы поместить определения обоих классов в один и тот же модуль. Есть ли какие-либо другие предложения?

В качестве игрушечного примера можно привести класс A, у которого есть атрибут, являющийся списком, и класс B, у которого есть атрибут, являющийся кортежем. Затем у класса A есть метод, который принимает экземпляр класса B и возвращает экземпляр класса A (путем преобразования кортежа в список), и аналогичным образом у класса B есть метод, который принимает экземпляр класса A и возвращает экземпляр класса B. (путем преобразования списка в кортеж).

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