也许我确实错过了文档中的一些关键点,但我正在努力寻找一些easy,pythonic的方式来读取repeatedgRPC字段。
假设我们有一些原型:
message Bar
{
repeated float vals = 1;
}
message Foo
{
repeated Bar bars = 1;
}
service FooService
{
rpc GetFoo(Foo) returns (Foo) {}
}
在
Foo
(服务端)中读取 Foo
和 Bar
的 GetFoo
值是什么?
目标是将封装的重复浮点数读取到单独的列表或 NumPy 数组中。
我尝试通过索引或迭代器式循环进行访问,例如:
...
def GetFoo(self, request, context):
bar1 = request.bars[0]
...
不幸的是,这会引发消息对象
...has no len()
并简单地迭代点的异常:
...
def GetFoo(self, request, context):
point_lists = list()
for bar in request.bars:
points = [v for v in bar]
point_lists.append(points)
...
...引发异常
Bar object is not iterable
,这样我就无法循环遍历单点(尽管我不明白为什么它说 Bar
不可迭代,而 Foo
也是重复类型且 is 可迭代) ).
这样的东西适用于我类似的问题:
point_lists = [list(p) for p in request.bars]