Python中如何通过变量动态访问对象属性并完成字符串拼接写入
动态访问对象属性的解决方案
这问题我熟!你现在的需求是:current 变量存的是属性名的字符串(比如'connection_name'),想通过类似 qs.current 的写法,实际获取 qs.connection_name 的值,而不是硬编码属性名对吧?
Python 里专门提供了 getattr() 函数来处理这种动态属性访问的场景,它的作用就是根据字符串形式的属性名,获取对象对应的属性值。
把你的代码修改成这样就可以实现需求了:
current = 'connection_name' # 用 getattr 动态获取属性值,同时用 f-string 让字符串拼接更简洁 f.write(f"\t{current}\t= {getattr(qs, current)}\n")
补充说明:
getattr(qs, current)完全等价于qs.connection_name(当current = 'connection_name'时),如果后续current换成其他属性名的字符串,代码也能自动适配对应的属性。- 推荐用 f-string(
f"")来拼接字符串,比用+更简洁,还能避免不同类型变量拼接时的报错问题。 - 如果担心属性不存在会报错,可以给
getattr()加第三个参数作为默认值,比如:getattr(qs, current, '属性不存在'),这样即使属性不存在,代码也不会崩溃,而是返回你指定的默认值。
内容的提问来源于stack exchange,提问作者Cool Breeze
相关产品推荐
相关产品推荐

