ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ПЕРЕД МАРКИРОВКОЙ КАК ДУБЛИКАТА
У меня есть каталог, настроенный так:
app.py
Modules/
__init__.py
a.py
b.py
Где __init__.py содержит:
import a
import b
и a.py содержит:
import b
Class A():
b_instance = b.B()`
и b.py содержит:
import a
Class B():
a_instance = a.A()`
Вся эта папка /Modules
импортирована из основного файла app.py.
Насколько я понимаю, казнь будет выглядеть следующим образом:
1. app.py import Modules
2. /Модули/__init__.py import a
3. / Модули/a.py import b
4. /Modules/b.py import a
(видит, что a уже есть в sys.modules и продолжается)
5. /Modules/b.py выполняет класс B () и завершается неудачно при попытке выполнить: a_instance = a.A()
, поскольку, хотя a.py находится в sys.modules, он еще не выполнил class A
и, следовательно, b.py не может получить доступ Class A
Как тогда, я могу иметь два класса, которые зависят друг от друга, и эта зависимость связана в самой высокой области видимости класса (то есть не в методе класса)?
Решения, представленные в сети, предполагают, что зависимость класса возникает в некотором под-методе, который устраняет проблему, потому что фактический класс не нужен, пока эта конкретная функция не будет выполнена. Отличие моей проблемы в том, что зависимость класса находится непосредственно в классе, а не в каком-то методе, поэтому фактический класс нужен немедленно.