所以我有以下情況。我有一個配置類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