Ejemplo n.º 1
0
 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 iteritems(kwargs):
         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)
Ejemplo n.º 2
0
 def SetListener(self, listener):
     if listener is None:
         self._listener = message_listener_mod.NullMessageListener()
     else:
         self._listener = listener