作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我应该将什么作为第一个参数“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 在线文档可能对这个具体区别有点混淆)。
关于python - 如何在当前模块上调用 setattr()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2933470/
我是一名优秀的程序员,十分优秀!