For anyone who might reach here for the same question. I suggest using extend instead of add and then give values to fields. For example:
packetMessage.checkMessage.balanceUpdates.extend([balanceUpdateMessage]) This is much simpler and also easy for assigning object after deserialization and nested structures. On Monday, June 24, 2013 at 3:44:48 PM UTC-4, Lotte R. Leben wrote: > > Hi Ilia, > > Am Montag, 24. Juni 2013 20:26:47 UTC+2 schrieb Ilia Mirkin: >> >> Try >> >> x = packetMessage.checkMessage.balanceUpdates.add() >> x.tid = 111 >> x.amount = 222 >> > > works like a charm, thank you so much! > > >> >> See https://developers.google.com/protocol-buffers/docs/pythontutorial >> for more info. >> >> On Sun, Jun 23, 2013 at 9:49 AM, Lotte R. Leben <[email protected]> >> wrote: >> > Hi, >> > this might be quite the newbie question, but I haven't been able to >> find any >> > hints through googling, so here it goes: >> > What I'm trying to to is send orotobuf messages between an Android App >> a >> > Python Script containing (among other things) a list of key-value pairs >> (if >> > ints). >> > The solution that I came up with was just defining my own “tuple” as >> another >> > protobuf message and then including a repated field of said type, like >> so: >> > >> > message CheckMessage { >> > message BalanceUpdateMessage{ >> > required int32 transactionID = 1; >> > required sint32 amount = 2; >> > } >> > required int32 amount = 3; >> > required sint32 newBalance = 5; >> > repeated BalanceUpdateMessage balanceUpdates = 4; >> > } >> > >> > and then try to fill the balaceUpdates in Python (the checkMessages are >> > embedded in another packetMessage): >> > >> > balanceUpdateMessage = >> > protoPackets_pb2.CheckMessage.BalanceUpdateMessage() >> > balanceUpdateMessage.transactionID = 1111 >> > balanceUpdateMessage.amount = 2222 >> > >> > >> > packetMessage.checkMessage.balanceUpdates.append(balanceUpdateMessage) >> > >> > But when I run this, I get the error: >> > >> > AttributeError: 'RepeatedCompositeFieldContainer' object has no >> attribute >> > 'append' >> > >> > ... I kind of expected my approach to fail, but not with an error >> message >> > like this :D >> > >> > So my question is: Is it even possible to send multiple key,value - >> pairs >> > with protobuf and if yes, how? Or if I'm on the right track: what is my >> > mistake? >> > >> > ( I know that one usually would set the contents of a “nested” message >> with >> > packetMessage.checkMessage.balanceUpdateMessage.transactionID = 333 (or >> so), >> > but since I'm dealing with a repeated field that neither works nor >> would it >> > make sense (to me, at least). ) >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "Protocol Buffers" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to [email protected]. >> > To post to this group, send email to [email protected]. >> > Visit this group at http://groups.google.com/group/protobuf. >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > >> > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
