파이썬에서 프로토콜 버퍼를 사용하고 있는데 Person
메시지가 있습니다.
repeated uint64 id
하지만 다음과 같이 값을 할당하려고 할 때 :
person.id = [1, 32, 43432]
오류가 발생합니다. Assigment not allowed for repeated field "id" in protocol message object
반복되는 필드에 값을 할당하는 방법은 무엇입니까?
답변:
당으로 문서 , 직접 반복 필드에 할당 할 수 없습니다. 이 경우를 호출 extend
하여 목록의 모든 요소를 필드에 추가 할 수 있습니다 .
person.id.extend([1, 32, 43432])
append
필드가 원시 유형 (문자열, int32 등)이 아닌 메시지 유형 인 경우 작동하지 않습니다. extend
메시지 유형에 대해 작동합니다.
del person.siblings[:]
person.siblings.extend([Person(), Person()])
반복되는 복합 유형의 경우 이것이 저에게 효과적이었습니다.
del person.things[:]
person.things.extend([thing1, thing2, ..])
이 댓글에서 가져온 반복 필드에 할당하는 방법은 무엇입니까? 반복 필드에 할당하는 방법은 무엇입니까?
append()
, 예를 들어person.id.append(1)
. 이것은 모든 protobufrepeated
필드에 적용됩니다 .