使用python-workfront模块无法获取搜索结果的referenceNumber属性值
解决python-workfront中Issue对象无法直接访问referenceNumber属性的问题
我之前也碰到过一模一样的情况,其实问题出在python-workfront返回的Issue对象并没有把你请求的字段直接映射为实例属性——虽然打印对象时能看到referenceNumber的值,但它其实存在对象内部的字典结构里,不是直接可通过点语法访问的属性。
先搞清楚字段到底存在哪里
你可以先运行下面的代码,查看对象的内部结构,确认字段的存储位置:
# 查看对象的所有可用属性 print(dir(issue)) # 查看对象的内部变量字典 print(vars(issue)) # 也可以试试打印常见的存储字段的属性,比如fields或data print(issue.fields) # 或者 issue.data
正确获取referenceNumber的两种方法
根据python-workfront的常规实现,你可以用以下两种方式拿到这个值:
- 使用对象的
get方法(SDK通常会实现这个方法来读取字段):
print(issue.get('referenceNumber'))
- 直接访问内部存储字段的字典:
如果上面的检查发现字段存在fields属性里,就这么写:
print(issue.fields['referenceNumber'])
要是存在data属性里,就改成:
print(issue.data['referenceNumber'])
为啥打印对象能看到值却不能直接访问?
这是因为Issue对象的__str__或__repr__方法把内部的字段数据格式化后显示出来了,但这只是打印时的展示效果,并不意味着这些字段被设置成了对象的直接实例属性。
内容的提问来源于stack exchange,提问作者Gregory Lancaster
相关产品推荐
相关产品推荐

