You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:06:03