Задать вопрос

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

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

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

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

Похожие вопросы