所以我有以下情况。我有一个配置类config.py持有像一些系统设置变量:'重新加载'python中的变量
class TVBSettings():
TVB_CONFIG_FILE = os.path.expanduser(os.path.join("~", 'tvb.configuration'))
TVB_STORAGE = os.path.expanduser(os.path.join("~", "TVB" + os.sep))
.... etc ...
现在除了这个,我有一个配置文件,当它的存在将覆盖一对夫妇这些变量。为了在UI中显示这些“改写的”配置变量我使用元史/ CherryPy的,我有一个SettingsService基地字典,speficifies像一些信息(在setttingsservice.py):
from tvb.config import TVBSettings as cfg
CONFIGURABLE_KEYS = {'TVB_STORAGE':{'label':'Root used for all you projects:',
'value':cfg.TVB_STORAGE,
'type':'text'},
'SERVER_IP':{'label':'Server name:',
'value':cfg.SERVER_IP,
'type':'text'},
'WEB_SERVER_PORT':{'label':'The port used by cherrypy:',
'value':cfg.WEB_SERVER_PORT,
'dtype':'primitive',
'type':'text'},
... other entries ... }
现在这settingsservice.py也有一个方法update_configuration()
,它从配置文件中读取并修改frim cfg的默认参数。这可以正常工作,并且可以在整个系统的其余部分看到更改,但CONFIGURABLE_KEYS字典仍然保留旧值(即,即使cfg.TVB_STORAGE已从配置文件修改,在上例中也是如此,在旧字典中旧值仍然存在保持)。现在,我猜这是出于同样的原因,这些变化都没有做,如果我做的:
>>> class A:
... x = 1
>>> a = {1: A.x}
>>> A.x = 2
>>> a
{1: 1}
所以我的问题是,有没有办法迫使蟒蛇“刷新”该变量考虑新的变化。
EDIT(sblom响应后):
这是不是真的在我的情况选择,cfg
将来自例如A
和CONFIGURABLE_KEYS
需要从cfg
许多不同variabled的不同条目。
问候, 波格丹
[此问题](http://stackoverflow.com/questions/986006/)深入讨论了Python中通过引用传递变量。 – 2012-01-30 07:58:42