Кроссмодульные переменные в python 3.8+
искатели (и мудрецы), я столкнулся с необходимостью (в следствие моей любви к упрощению себе жизни) назначения кроссмодульных переменных.
На данный момент после эксперементов в python 3.10 я знаю следующее:
- При импорте неинициализированных переменных (например, функций, классов, интов и т.д) они не изменяются между модулями, а также путь в памяти у них одинаковый во всех файлах где они импортируются
- Переназначение (и назначение) переменных в импортируемом модуле может быть решением, но как по мне выглядит это нестабильно
- Инициализированные классы и функции это отдельные от неинициализированных объекты (как напоминание, почему в примере класс не инициализирован)
В интернете доходчивых объяснений того, как в этом векторе работает импорт я не нашел (или не повезло с выборкой или катарактой).
Дополнение(для большей доходчивости): Папка с проектом:
- main.py
- at.py
- bt.py
main.py:
import at
print(f'До переназначения от bt.py: {at.A.a}')
at.A.b = 2
import bt
print(f'После переназначения от bt.py: {at.A.a}')
bt.py:
import at
at.A.a = 3
print(f'После назначения от main.py: {at.A.b}')
at.py:
class A:
a = 1