Python Zeep:如何判断邮件是否有附件?

Python Zeep: How to determine whether message has an attachment?

我必须查询第三方 SOAP 端点。这个端点有时有附件,有时只有普通的 XML。在收到响应并检查它之前,我无法知道它会是什么。

之前的开发者是这样操作的:

result = client.service.download(
    # parameters
)

# TODO remove unresolved reference when I understand zeep library better
# noinspection PyUnresolvedReferences
message_type = zeep.wsdl.attachments.MessagePack
if isinstance(result, message_type):
    content = str(result.attachments[0].content, encoding='utf-8')
else:
    content = serialize_object(result)["fileContents"]

我想要一种方法来确定我得到的响应类型,而不必抑制来自我的 IDE 的“未解决的引用”投诉。最好避免使用异常进行流量控制,即在调用 result.root.

时处理 AttributeError

Zeep 是否有一些规范的方法来确定响应是否有附件?我正在努力在文档中找到类似的东西。

我想通了,如果我尝试序列化结果,我可以检查我是否得到了字典。

result = client.service.download(
    # parameters
)
_result = serialize_object(result)

if not isinstance(_result, dict):
    _result = serialize_object(result.root)
    _result["fileContents"] = str(result.attachments[0].content, encoding='utf-8')

# use _result going forward