Python序列化proto中repeated修饰的数据

一、repeated修饰复合数据结构,即message时

 1、使用message的add方法初始化新实例

 2、分别对新实例中的每个元素赋值;或使用CopyFrom(a)拷贝a中的元素值

 1 message TechnologyTreeNode{
 2     optional int32 node_id = 1;
 3     optional int32 level   = 2;
 4 }
 5 
 6 message TechnologyTree {
 7     repeated TechnologyTreeNode tree_node_list = 1;
 8 }
 9 
10 tt = TechnologyTree()
11 ttn = tt.tree_node_list.add()
12 
13 # 分别赋值
14 ttn.node_id = 2
15 ttn.level = 3
16 
17 # CopyFrom
18 tn = TechnologyTreeNode()
19 tn.node_id = 2
20 tn.level = 3
21 ttn.CopyFrom(tn)

二、repeated修饰基础数据类型,如:int等

1、单个元素使用append()追加

2、list使用expend()

message A {
    repeated int ids = 1;
}
a = A()
a.ids.append(1)
l = [1, 2, 3]
a.ids.extend(l)

三、删除repeated修饰的数据中元素

del a.ids[index]
or


a.ids.remove(item)

四、清空

del a.ids[:]

or

a.ids.clear()