python - 如何在当前模块上调用 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 在线文档可能对这个具体区别有点混淆)。

https://stackoverflow.com/questions/2933470/

相关文章:

php - 如何在 CentOS 6.2 上安装 PHP mbstring

python - 我可以在 pip 要求文件中添加注释吗?

linux - fuse 错误 : Transport endpoint is not connec

linux - Crontab 每 15 分钟运行一次,除了凌晨 3 点?

python - Django 设置 ‘SECRET_KEY’ 的目的是什么?

linux - Linux 上的 NuGet : Error getting response st

linux - svn over HTTP 代理

python - 我什么时候应该使用 ugettext_lazy?

linux - 如何找到今天在 Unix/Linux 中创建的所有文件?

python - 如何在 Python 中进行并行编程?