code: def assert_valid(self, instance, value=None):
          
          if value is None:
              value = instance._get(self.name)
          if value is None and self.required:
              message = (
                  "The '{name}' property of a {cls} instance is required "
                  "and has not been set.".format(
                      name=self.name,
                      cls=instance.__class__.__name__
                  )
              )
              raise ValidationError(message, 'missing', self.name, instance)
          valid = super(Property, self).assert_valid(instance, value)
          return valid
docs: Returns True if the Property is valid on a HasProperties instance
  
          Raises a ValueError if the value required and not set, not valid,
          not correctly coerced, etc.
  
          .. note::
  
              Unlike :code:`validate`, this method requires instance to be
              a HasProperties instance; it cannot be None.