Python是否有内置支持类式属性赋值的非自定义类变量
有没有Python内置的可动态添加属性的对象?
嘿,这个需求太贴合调试场景了!刚好Python内置就有现成的方案,完全不用自己写自定义类或者实现__getattr__~
最适合的选项就是types.SimpleNamespace——它就是专门为动态存储属性设计的,用法和你想要的完全一致:
from types import SimpleNamespace a = SimpleNamespace() a.variable_a = 1 a.variable_b = 2 a.variable_c = 3 print("{}, {}, {}".format(a.variable_a, a.variable_b, a.variable_c)) # 输出: 1, 2, 3
调试的时候它还有额外的便利:直接用vars(a)就能把它转换成字典,快速查看所有属性和对应的值:
print(vars(a)) # 输出: {'variable_a': 1, 'variable_b': 2, 'variable_c': 3}
如果不想多写一行导入代码(比如调试时想快速敲代码),可以直接用一行代码创建实例:
a = __import__('types').SimpleNamespace()
另外提一嘴,你可能见过argparse.Namespace,它的功能和SimpleNamespace几乎一样,也支持动态添加属性,但SimpleNamespace更轻量,就是专门用来干这种临时属性存储的活,比argparse.Namespace更适合你的调试场景。
总结一下:types.SimpleNamespace就是你要找的内置对象,完美匹配你的代码示例,不用自己造轮子,调试时用它临时存变量超顺手!
内容的提问来源于stack exchange,提问作者Rohi
相关产品推荐
相关产品推荐

