Я работал с пакетом в python, который я понял, если я импортирую пакет и изменю переменную в нем, переменная останется неизменной, когда я попытаюсь получить доступ к нему в пакете позже. я протестировал на простом примере всего три файла, подобные этому:
test /
| -test.py
| -lib /
.. | -lib.py
. . | -__ init__.py
и я импортировал содержимое lib в __init__ следующим образом
# __init__.py
from .lib import *
содержимое lib.py и test.py, как показано ниже:
# lib.py
a = 10
def foo():
print(a)
# test.py
import lib
lib.a = 20
lib.foo()
# prints 10
при запуске test.py будет напечатано 10, что является начальным значением.
, но если я импортирую lib в test.py, как это import lib.lib
, будет напечатано 20. Так что мне было интересно если есть способ заставить __init__ вести себя точно так же, как lib.py?
РЕДАКТИРОВАТЬ: я использовал держатели переменных (если я не ошибаюсь), что означает, что я создал несколько классов (без метода инициализации), которые я просто держал переменные, которые хотел изменить, и мне не нужно было перемещать содержимое lib.py в __init__.py. но для использования в будущем это лучший выбор.