如何在当前模块上调用setattr()?

问题:

作为第一个参数“object”传递给函数setattr(object, name, value),设置当前模块的变量是什么?
例如:

setattr(object, "SOME_CONSTANT", 42);

给出如下效果:

SOME_CONSTANT = 42

在包含这些行的模块中(使用正确的object)。
我在动态地在模块级别生成几个值,而且我无法在模块级定义__getattr__,这是我的后备。

回答:

import sys

thismodule = sys.modules[__name__]

setattr(thismodule, name, value)

或者,不使用setattr(打破了问题的信,但满足相同的实际目的;-):

globals()[name] = value

 注意:在模块范围,后者相当于:

vars()[name] = value

这是一个更简洁,但不能从一个函数内(vars())给出范围的变量:调用在全局范围的模块的变量,然后可以使用它R / W,但在函数中调用函数的变量,然后它必须被视为R / O – Python在线文档对这一特定区别可能有点混乱)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do I call setattr() on the current module?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 1