【发布时间】:2021-10-12 23:07:32
【问题描述】:
我有一个案例,我从另一个模块接收对象。对象类型可以是 JSON String、dict 或 Google Protobuf。我可以在 python 中使用 isinstance 来确定它是 JSON String 还是 dict,但是发现很难使用 isinstance 来检查它是否是 protobuf。我什至不确定isinstance 是否可以用于 Google Protobuf 等非原始类型。
那么,有没有办法在 Python 中检查给定对象是否属于 Google Protobuf 类型?
【问题讨论】:
-
如果类型只能是三个中的一个,为什么不检查前两个并假设它是关联
else中的 Protobuf? -
一种方法(不确定在这种情况下是否最好)是尝试反序列化该值并用
try ... except包装它,以在它不是有效的 Protobuf 时捕获错误。 -
I am not even sure if isinstance can be used for non primitive types like Google Protobuf....你能想办法找出来吗? -
isinstance()将适用于非原始类型。 -
user2896235:
isinstance()的文档说classinfo参数可以是类型对象的元组,这意味着您可以在一次调用中检查多种类型.至于@Danielle 的评论,您可以在protobuf上尝试一下,看看它是否有效。
标签: python protocol-buffers isinstance