«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как предотвратить циклический импорт в Python?

Как предотвратить циклический импорт в Python?

Опубликовано 13 ноября 2024 г.
Просматривать:780

How to Prevent Circular Imports in Python?

Предотвращение циклического импорта в Python

В Python циклический импорт, при котором модули используют друг друга для определения, может привести к ошибкам во время выполнения. Хотя обычно рекомендуется перепроектировать код, чтобы избежать циклических зависимостей, бывают случаи, когда их необходимо устранить.

Абсолютный импорт

В случаях, когда циклический импорт включает импорт модулей следует использовать абсолютный импорт. Это предполагает указание полного пути к модулю, гарантируя, что импорт будет успешным независимо от того, где он находится в кодовой базе.

Отсрочка импорта

Другой подход — отложить импорт до тех пор, пока он не будет на самом деле необходимы в коде. Определив функции или блоки кода, которые обрабатывают импорт, вы можете избежать проблем циклического импорта на верхнем уровне модуля.

Центральный модуль импорта

При центральном импорте модуль (обычно файл __init__.py в пакете или папке), весь необходимый импорт можно централизовать. Однако этот подход может привести к длинным и запутанным операторам импорта.

Реорганизация кода

Если циклическая зависимость возникает из-за объектов внутри модулей, ссылающихся друг на друга, реорганизация кода может быть необходимым. Перемещая ссылки внутри функций или блоков кода, можно решить проблемы импорта.

Пример

Рассмотрим сценарий, в котором два класса, A и B, хотят ссылаться на каждый чужие экземпляры. Вместо определения их в отдельных модулях рассмотрите возможность размещения обоих определений классов в одном модуле. В качестве альтернативы, если неизменность вызывает беспокойство, вы можете создать неизменяемую версию класса, которую можно будет использовать отдельно, не вводя циклических зависимостей.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3