Как вызвать из класса другого файла функцию?

Здравствуйте! Есть 2 файла, файл один подключает второй, во втором хранится большой класс. Но возникла ситуация, что нужно в файле с классом вызвать функцию из файла 1. import не подходит, потому что тогда получается зацикливание (ошибка ImportError: cannot import name 'Settings' from partially initialized module 'settings' (most likely due to a circular import)). Все переменные не переместить в другой файл, потому что снова получится это зацикливание из-за того, что экземпляр класса много где использован. Что тут можно сделать?
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Vindicar
Нужно пересмотреть структуру вашего кода. Она должна напоминать дерево.
На вершине дерева - логика программы. Она импортирует в себя остальные модули (т.е. знает о них). Остальные модули в идеале не должны знать ни о логике, ни о других модулях равного им уровня, а быть полностью самостоятельными.
Если же им нужно знать что-то о логике (например, читать значение или вызывать метод объекта логики при определённых условиях), то этот объект логика должна передать им самостоятельно, передав ссылку на него либо как параметр конструктора, либо позднее, отдельным методом.

Конкретнее ничего сказать не могу, не зная вашей задачи и набора объектов.
Ответ написан
@tshipenchko
Явно в вашей структуре файлов что-то не то, рас уж приходиться вызывать одно из другого)
Рекомендую переместить функцию в файл с классом (если это конечно функция а не метод)
Может использовать dataclass ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы