Я все еще не уверен, но правильно ли я понимаю. Вы должны просто использовать редактирование вашего вопроса и опубликовать правильно отформатированный код:
__init__.py:
all = [ 'Events', 'Channels', 'Genres', 'Subgenres','EPGSections']
try:
conn = MySQLdb.connect(host,user,passwd,db)
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
except:
cursor = None
environment = 'live
Теперь в Channels.py вы хотите изменить _Framework.DB.__init__.cursor
и _Framework.DB.__init__.environment
, и эти изменения должны быть видны во всей вашей программе?
Если это то, что вы хотите, вы должны знать, что при импорте:
from _Framework.DB.__init__ import cursor
from _Framework.DB.__init__ import environment
В результате вы получаете две переменные курсора и среды в пространстве имен вашего модуля Channels.py, и любые сделанные вами изменения будут видны только в этом модуле. Если вы хотите добиться своего результата, попробуйте это:
import _Framework.DB
_Framework.DB.cursor = new_cursor
_Framework.DB.environment = new_environment
Таким образом, вы фактически меняете переменные модуля. Теперь в остальной части вашей программы, когда вы хотите, чтобы изменения вступили в силу, вы можете:
Принимает переменные так же, как вы их изменили:
import _Framework.DB
_Framework.DB.cursor #changes made in other module will have effect
_Framework.DB.environment #changes made in other module will have effect
импортируйте, как вы, но убедитесь, что необходимые изменения сделаны ДО того, как вы выполните какой-либо импорт.
В качестве отрицательного примера для второго случая:
#module Vars
a = 1
--------------------------
#module Do_change
import Vars
Vars.a = 2
--------------------------
#module A
from Vars import a
--------------------------
#module B
from Vars import a
--------------------------
#some random module
import A
import Do_change
import B
Теперь, если вы находитесь в таком порядке импорта, когда вы импортируете A, он создаст переменную a в пространстве имен A со значением Vars.a. Do_change отредактирует переменную соответственно, но A не будет знать об этом. Однако, кто будет импортирован после, увидит правильное значение Vars.a = 2.
Вот почему я действительно рекомендую первый вариант, так как, на мой взгляд, это правильный подход.