如何在Python中从字典生成以键为变量名的类实例
把字典键值对转为对应变量名的类实例
当然可以实现,下面是两种实用的方法:
方法1:用globals()直接更新全局命名空间
Python的globals()函数会返回当前的全局命名空间字典,我们可以直接把test_dict里的键值对合并进去:
class Class1: pass class Class2: pass class Class3: pass test_dict = {"test1": Class1(), "test2": Class2(), "test3": Class3()} # 一键把字典内容转为全局变量 globals().update(test_dict) # 现在就能直接用test1、test2、test3这些变量了 print(test1) # 输出类似 <__main__.Class1 object at 0x102345678>
方法2:用exec动态生成赋值语句
遍历字典,为每个键值对生成对应的赋值代码,再通过exec执行:
class Class1: pass class Class2: pass class Class3: pass test_dict = {"test1": Class1(), "test2": Class2(), "test3": Class3()} for var_name, obj_instance in test_dict.items(): exec(f"{var_name} = obj_instance") # 验证变量是否创建成功 print(test2) # 输出类似 <__main__.Class2 object at 0x102345678>
要注意的点
- 这两种方法都会直接修改命名空间,如果你的字典键和现有变量重名,会直接覆盖掉原有变量,使用前要确认键名的唯一性。
exec要谨慎用,如果字典的键来自用户输入这类不可信来源,可能会引入安全隐患,只在你能完全控制输入的场景下使用。
内容的提问来源于stack exchange,提问作者Andy Mc
相关产品推荐
相关产品推荐

