Давайте розглянемо кожен із них нижче:
- Імпортуйте модуль у функцію. Один із способів уникнути циклічного імпорту — імпортувати модуль у функцію, а не на верхній рівень модуля. …
- Використовуйте синтаксис «Імпортувати як». …
- Перемістіть імпорт у кінець модуля. …
- Використовуйте бібліотеку «ImportLib». …
- Створіть загальний файл для імпорту.
Найкращий спосіб виправити цю ситуацію – це організуйте свій код у шари, щоб зв’язки імпорту природним чином проходили лише в одному напрямку. Але іноді спрацьовує просто змінити стиль оператора імпорту, який ви використовуєте.
Щоб розірвати циклічну залежність, представити спільний інтерфейс, як-от , які обидва і реалізовуватимуть або використовуватимуть: залежно від спільного інтерфейсу (), обидві служби тепер відокремлені одна від одної, усуваючи циклічну залежність.
Використовуйте функції importlib або __import__() Python Модуль importlib Python забезпечує точне керування імпортом, дозволяючи динамічно завантажувати модулі, коли це необхідно. Подібним чином функцію __import__() можна використовувати для досягнення динамічного імпорту.
Є два способи уникнути цієї циклічної залежності. Найпростішим є впровадження інтерфейсу, від якого можуть залежати обидва класи. Однак, якщо ми хочемо чітко дотримуватися принципу інверсії залежностей (DIP), нам слід переконатися, що ми завжди залежимо лише від абстракцій.