我为 ROS 包定义了以下两个消息结构:
点.msg
float64 x
float64 y
积分.msg
point[] points
我正在 Python 中实例化并填充点数组,如下所示:
point_list = points()
pt = point()
for element in self.points:
pt.x = element[0,0]
pt.y = element[1,0]
point_list += (pt,)
这是我收到的错误:
unsupported operand type(s) for +=: 'points' and 'tuple'
PS:尝试过
.append
,但还是不行
消息
points
并不是直接的 point
消息列表,而是一个结构,其中有一个名为 points
的成员,它是一个列表。
要将元素添加到此列表,您必须访问成员,而不是包含结构:
point_list.points.append(pt)
试试这个
point_list = []
pt = point()
for element in self.points:
pt.x = element[0,0]
pt.y = element[1,0]
point_list += (pt,)
在您告诉编译器之前,点类是一个列表对象,除非您调用点的方法,否则这是不可能的。通过将其设置为通用列表 (
[]
),它可以采用任何类型。这就是 python 之美的一部分,你并不总是需要指定对象类型。