Hoe circulaire import in Python te vermijden?

|

Ik weet dat de kwestie van circulaire import in Python al vele malen eerder is voorgekomen en ik heb deze discussies gelezen. De opmerking die herhaaldelijk in deze discussies wordt gemaakt, is dat een circulaire import een teken is van een slecht ontwerp en dat de code moet worden gereorganiseerd om de circulaire import te voorkomen.

Kan iemand mij vertellen hoe ik een circulaire import kan vermijden in deze situatie?: Ik heb twee klassen en ik wil dat elke klasse een constructor (methode) heeft die een instantie van de andere klasse neemt en een instantie van de klasse retourneert.

Meer specifiek, één klasse is veranderlijk en één is onveranderlijk. De onveranderlijke klasse is nodig voor hashen, vergelijken enzovoort. De veranderlijke klasse is ook nodig om dingen te doen. Dit is vergelijkbaar met sets en frozensets of met lijsten en tuples.

Ik zou beide klassedefinities in dezelfde module kunnen plaatsen. Zijn er nog andere suggesties?

Een speelgoedvoorbeeld is klasse A met een attribuut dat een lijst is en klasse B met een attribuut dat een tuple is. Dan heeft klasse A een methode die een instantie van klasse B neemt en een instantie van klasse A retourneert (door de tuple naar een lijst te converteren) en op dezelfde manier heeft klasse B een methode die een instantie van klasse A neemt en een instantie van klasse B retourneert (door de lijst naar een tuple te converteren).

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