Python使用config.ini配置JIRA模块时遇PropertyHolder属性错误求助
问题分析与解决方案
你的问题核心是动态访问对象属性的方式错误。issue.fields是PropertyHolder对象,你不能直接把变量名写在属性位置(比如.config_data['item'])——Python会把config_data当成issue.fields的属性名,而不是去读取config_data['item']的值作为属性名。
正确解决步骤
- 先确认你的
config.ini内容格式正确:
[DEV] item = customfield10000
- 修改Python代码,用
getattr()函数动态获取属性:
import configparser # Python3中是configparser,Python2是ConfigParser config = configparser.ConfigParser() config.read('config.ini') config_data = config['DEV'] # 用getattr动态读取issue.fields的对应属性 var1 = getattr(issue.fields, config_data['item'])
为什么之前的方法无效?
issue.fields.config_data['item']:Python会尝试查找issue.fields的config_data属性,但该对象根本没有这个属性,直接触发报错。eval(config_data['item']):仅执行字符串"customfield10000"的解析,得到的只是字符串本身,没有和issue.fields建立关联,无法获取目标字段。
额外提醒
不要使用eval(),既存在安全风险(配置文件被篡改时可能执行恶意代码),也完全没必要——getattr()是Python官方推荐的动态访问对象属性的标准方法。
内容的提问来源于stack exchange,提问作者cmcigas
相关产品推荐
相关产品推荐

