gpt4 book ai didi

python - 运行时将属性注入(inject)模块命名空间

转载 作者:行者123 更新时间:2023-12-04 03:01:00 29 4
gpt4 key购买 nike

当导入我正在编写的 python 模块时,我想根据在同一模块中定义的字典的内容为模块创建一组属性。这是模块中字典的一小部分:

list_of_constellations = {
0: Constellation("And", "Andromeda"),
1: Constellation("Ant", "Antlia"),
2: Constellation("Aps", "Apus"),
3: Constellation("Aql", "Aquila"),
}

其中 Constellation 是一个命名元组。我想要的是将一组新的属性注入(inject)命名空间,其名称是元组中的第一个元素,其值是键。因此,导入后,可以使用以下属性:
import constellations

print constellations.And # prints 0
print constellations.Ant # prints 1

我该怎么做?

最佳答案

在模块本身中,globals()函数将模块命名空间作为字典返回;只需使用每个命名元组的第一个元素作为键来设置整数值:

for key, const in list_of_constellations.items():
globals()[const[0]] = v # set "And" to 0, etc.

或从模块外部使用 setattr()为模块添加属性:
import constellations

for key, const in constellations.list_of_constellations.items():
setattr(constellations, constellation[0], v) # set "And" to 0, etc.

关于python - 运行时将属性注入(inject)模块命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com