Кроссмодульные переменные в 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

Ответы (0 шт):