Python-gRPC:AttributeError:';任何';对象没有属性

Python-gRPC:AttributeError:';任何';对象没有属性,python,protocol-buffers,grpc,any,Python,Protocol Buffers,Grpc,Any,我在循环消息属性时遇到了一个问题,该属性在任何字段中都是重复的。 这是用Python编写的 例如。 假设我们有一个班级,学生可以是男生或女生(这只是一个例子,说明重复列表元素可能来自不同类型) 我有一个服务,它从服务器返回一个Class对象,在那里收集男学生和女学生对象,并且正确填充Any集合 class=client.GetClass() 现在,class.students属性是一个RepeatedComposite集合,它包含任何对象 我知道我可以循环它们,并将它们逐个转换为检查类型的女生或

我在循环消息属性时遇到了一个问题,该属性在任何字段中都是重复的。 这是用Python编写的

例如。 假设我们有一个班级,学生可以是男生或女生(这只是一个例子,说明重复列表元素可能来自不同类型)

我有一个服务,它从服务器返回一个Class对象,在那里收集男学生和女学生对象,并且正确填充Any集合

class=client.GetClass()

现在,class.students属性是一个RepeatedComposite集合,它包含任何对象

我知道我可以循环它们,并将它们逐个转换为检查类型的女生或男生,但此代码旨在供不应该真正了解它的用户使用

我会解释得更清楚。我的一个用户可能希望循环class.students集合并从其对象获取属性:

class = client.GetClass()
for student in class:
     print student.name
这将引发异常:

AttributeError: 'Any' object has no attribute 'name' 
因为列表只包含任何对象。 我如何处理这个问题?我不能覆盖重复类以确保它在iter上转换,google建议绝对避免继承原型类/类型。 当用户循环Class.students属性时,我如何给用户实际的对象类型而不是Any类型,这样他就可以访问这些属性上的字段? 我不希望用户必须手动转换这些

我考虑包装客户机方法,以便循环返回的grpc对象students属性,将Any对象转换为正确的类型,但我不能用femalestudent或MaleStudents对象填充students属性,它们必须是Any对象

这有点奇怪,或者我遗漏了什么

谢谢

AttributeError: 'Any' object has no attribute 'name'