def init(self, **kwargs): self._cached_byte_size = 0 self._cached_byte_size_dirty = len(kwargs) > 0 self._fields = {} # _unknown_fields is () when empty for efficiency, and will be turned into # a list if fields are added. self._unknown_fields = () self._is_present_in_parent = false self._listener = message_listener_mod.nullmessagelistener() self._listener_for_children = _listener(self) for field_name, field_value in kwargs.iteritems(): field = _getfieldbyname(message_descriptor, field_name) if field is none: raise typeerror("%s() got an unexpected keyword argument '%s'" % (message_descriptor.name, field_name)) if field.label == _fielddescriptor.label_repeated: copy = field._default_constructor(self) if field.cpp_type == _fielddescriptor.cpptype_message: # composite for val in field_value: copy.add().mergefrom(val) else: # scalar copy.extend(field_value) self._fields[field] = copy elif field.cpp_type == _fielddescriptor.cpptype_message: copy = field._default_constructor(self) copy.mergefrom(field_value) self._fields[field] = copy else: setattr(self, field_name, field_value)
def setlistener(self, listener): if listener is none: self._listener = message_listener_mod.nullmessagelistener() else: self._listener = listener