0
我有这个代码(Reset.py),它的工作方式如何,除非我导入它。重置全局导入
class Res(object):
defaults={}
class NoKey: pass
def __init__(self):
for key, values in defaults.items():
globals()[key]=values
def add_defaults(key, values):
Res.defaults[key]=value
def remove_defaults(key=NoKey, remove_all=False):
if remove_all:
Res.defaults={}
else:
del Res.defaults[key]
不导入:
>>> a=54
>>> Res.add_default('a', 3)
>>> Res()
<__main__.Res object at 0x>
>>> a
3
>>> #great! :D
与进口:
>>> a=54
>>> Res.add_default('a', 3)
>>> Res()
<Reset.Res object at 0x>
>>> a
54
这必然意味着当它被导入它改变了全局()下复位,而不是__main__
。我怎样才能解决这个问题?
[编辑默认Res.defaults下remove_defaults(默认值是不是一个全局变量)。]
我只是想知道这是否可能,但我明白了你的观点。谢谢。 – what 2010-05-08 06:00:42
简短的答案是否定的,方法不知道它们被称为哪个模块,事实上,这个概念很难精确定义。 – 2010-05-08 06:24:46