בעיה בייבוא – Circular import

תגיות:

בClass Piece שלי יש בדיקות של isinstance של אובייקט שיורש מ Piece.
נסיון לייבא אימפורט של אותו אובייקט מכניס אותי לסירקיולר אימפורטינג (נראה לי) ובסוף מביא שגיאה די כללית.
“cannot import name Piece from piece”
הצלחתי לעקוף את זה בצורה קצת ‘לא מנומסת’ של יבוא האימפורט מתוך הפונקציות עצמן.
האם זה בסדר?

לייק 1

בגדול זה פחות טוב. אלא אם באמת יש קרייסיס import־ים רציני שסופר מצריך את זה (פחות סביר שיקרה במהלך הקורס), עדיף להימנע.
בד"כ אפשר להימנע מזה אם דואגים לקובץ־על שכזה, שמטפל בכל ה־import־ים ברמתו. ככה במקום ש־A יקרא ל־B ו־B יקרא ל־A, יש איזשהו C שקורא ל־A ול־B ומונע את הייבוא המעגלי ביניהם.

2 לייקים

תודה ים.
כן זה מה שקראתי. ומבחינתי הboard שלי עושה אימפורט לכל סוגי הpieces למיניהן -
אבל עדיין בכל אחד מהקבצים, ה IDE צועק עלי על משתנים לא מוכרים אם אני לא עושה להם אימפורט.
עריכה: לא רק ה IDE, גם בהרצה (not defined)
עריכה 2: אני צריך לשים את האימפורטים בתוך ה init של הקלאס כדי שהם יגיעו למודול שמאתחל את הקלאס? כי הרי אני מייצא בסוף את Board החוצה (כי גם זה פתר לי את זה, אבל גם הרגיש לי לא הכי מנומס)