python obj中出现意外的属性错误

2024-10-02 22:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析suds客户机从Web服务SOAP API返回的对象

我有一个属性对象的列表,比如

(defectStateAttributeValueDataObj){
   attributeDefinitionId = 
      (attributeDefinitionIdDataObj){
         name = "Comment"
      }
   attributeValueId = 
      (attributeValueIdDataObj){
         name = "Owner changed because of default owner assignment specified in the component map"
      }
}

以及

^{pr2}$

我使用以下循环提取键/值对:

for defect in myDefectsPage.mergedDefects :
   print defect.cid,
   for attribute in defect.defectStateAttributeValues:
       print attribute
       attr= attribute.attributeDefinitionId.name
       val=attribute.attributeValueId.name
       print attr,'=',val,
       print ""     

(以上对象是打印属性命令的结果)

对于每个属性,这将按预期工作,除了attribute.attributeDefinitionId.name==“注释”

对于那个我得到了

回溯(最近一次呼叫): 文件,第63行,英寸 瓦尔=attribute.attributeValueId.name AttributeError:“Text”对象没有属性“name”

这很奇怪,因为如果我用 瓦尔=attribute.attributeValueId属性#.名称 它会打印出来的

通信=(attributeValueIdDataObj){ name=“由于组件映射中指定的默认所有者分配而更改所有者” }在

所以它看起来像是一个attributeValueIdDataObj,并且有一个name属性。在

我使用了suds调试日志和XML return元素看起来完全相同,不管attribute.attributeDefinitionId。名字是。在

我不知道当试图访问name属性时它是如何变成一个“Text”对象的

有什么想法吗?在


Tags: 对象textnameinfor属性attributeval
1条回答
网友
1楼 · 发布于 2024-10-02 22:23:43

进一步检查(并在发生异常时打印出返回对象的类型),这是web服务SOAP服务器中的一个bug。在

当注释为空时,它返回一个

<attributeValueId/>

标签

而不是

^{pr2}$

对象。所以结果萨克斯文本对象而不是suds.attributeValueIdDataObj对象

所以没有Python或肥皂水之谜。在

抱歉误报了。。。在

相关问题 更多 >