Jak uniknąć cyklicznych importów w Pythonie?

|

Wiem, że problem importu kołowego w Pythonie pojawiał się już wiele razy i czytałem te dyskusje. Komentarz, który pojawia się wielokrotnie w tych dyskusjach, jest taki, że import cykliczny jest oznaką złego projektu i kod powinien zostać zreorganizowany, aby uniknąć importu cyklicznego.

Czy ktoś mógłby mi powiedzieć, jak uniknąć importu cyklicznego w takiej sytuacji?: Mam dwie klasy i chcę, aby każda klasa miała konstruktor (metodę), który pobiera instancję drugiej klasy i zwraca instancję klasy.

Dokładniej, jedna klasa jest zmienny, a jeden jest niezmienny. Klasa niezmienna jest potrzebna do mieszania, porównywania i tak dalej. Klasa mutowalna jest również potrzebna do robienia rzeczy. Jest to podobne do zestawów i zamrożonych zestawów lub do list i krotek.

Mógłbym umieścić obie definicje klas w tym samym module. Czy są jakieś inne sugestie?

Przykładem zabawki może być klasa A z atrybutem będącym listą i klasa B z atrybutem będącym krotką. Następnie klasa A ma metodę, która pobiera instancję klasy B i zwraca instancję klasy A (poprzez konwersję krotki na listę) i podobnie klasa B ma metodę, która pobiera instancję klasy A i zwraca instancję klasy B (konwertując listę na krotkę).

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