python - 如何以编程方式在模块中添加或删除名称
问题描述
假设我动态创建了一个模块:
import imp
my_module = imp.new_module('my_module')
我想向n
这个模块添加类似的名称/值,这相当于
my_module.a1 = None
my_module.a2 = None
my_module.a3 = None
...
如何访问像字典一样的模块名称空间(或以类似的方式),以便我可以编写类似的东西
for i in range(n):
my_module.some_env_like_dict[f"a{i}"] = None
另外,我怎样才能以类似的方式删除这些名称?
我了解 Python 可能没有推荐或官方的方式来执行此操作。显然,这不适用于任何严肃的项目。
我正在寻找一种比使用更优雅的解决方案exec
。
解决方案
我认为您所做的基本上是正确的,只是添加了一些内容:
my_module = imp.new_module('my_module')
my_module.var1 = 123
这将创建一个模块,并设置var1
在123
模块内。您可以像访问my_module.var1
任何其他模块一样访问它。
要从字符串访问属性,您可以执行以下操作:
val = getattr(my_module, "var1")
setattr(my_module, "var1", val + 1)
这设置val
为123
,然后使用值更新var1
。您也可以通过这种方式向模块添加新属性。my_module
124
推荐阅读
- mysql - 如何优化 prestashop 类别随机获取产品
- laravel - 我在 laravel 中读取 excel 文件时遇到问题
- retrofit2 - 如果 api 检索数据失败,加载指示器不会隐藏,尽管如果 api 成功检索 Android Paging 库中的数据,它会隐藏
- linq - 如何将 Dapper LINQ 与 TableDirect(无嵌入式 SQL)与 ORACLE 一起使用?
- django - 如何限制未经授权的用户访问 django 中的不同页面
- java - 执行流水线操作的设计模式建议
- java - Android:每小时获取 UsageStats
- html - 降低背景图像的不透明度
- python - Python list.clear() 时间和空间复杂度?
- c - 整数二进制文件上的 fread() 给出错误值