Python Thermo模块通过变量访问Chemical类属性报错问题求助
解决方案
报错原因
AttributeError由Python类属性的默认访问机制导致:使用对象.属性名的点语法访问属性时,Python会直接把点后面的内容作为固定的属性名去查找,不会将其识别为变量读取对应的值,因此写x.w时程序只会查找名为w的属性,而不会读取变量w中存储的MW字符串去查找对应属性。
解决方法
使用Python内置的getattr()函数即可实现变量动态读取属性,函数语法为:getattr(实例对象, 存储属性名的变量, 可选默认值)
你提供的测试代码修改后可正常运行,完整示例如下:
import thermo as th x = th.Chemical('H2O', T = 100, P = 10000) w = 'MW' # MW代表摩尔质量 # 替换原来的x.w为getattr调用 print(getattr(x, w))
如果需要避免输入的属性名不存在时抛出异常,可以传入第三个参数作为找不到属性时的默认返回值,示例如下:
# 当属性不存在时返回自定义提示 print(getattr(x, "not_exist_attr", "当前不支持查询该属性"))
内容的提问来源于stack exchange,提问作者mediocrecoder45
相关产品推荐
相关产品推荐

