'Dynamically set field values that are not defined.
Tries to set the value on the object normally, but failing that
sets the value on the contained entity.
Args:
key: Name of attribute.
value: Value to set for attribute.  Must be compatible with
datastore.
Raises:
ValueError on attempt to assign empty list.'

def __setattr__(self, key, value):

    check_reserved_word(key)
    if ((key[:1] != '_') and (not hasattr(getattr(type(self), key, None), '__set__'))):
        if (type(value) not in _ALLOWED_EXPANDO_PROPERTY_TYPES):
            raise TypeError(("Expando    cannot    accept    values    of    type    '%s'." % type(value).__name__))
        if (self._dynamic_properties is None):
            self._dynamic_properties = {}
        self._dynamic_properties[key] = value
    else:
        super(Expando, self).__setattr__(key, value)
