def __set__(self, instance, val):
val = self.fset(instance, val)<EOL>instance.__dict__[self.instance_field_name] = val<EOL>
this is the wrapper that will actually be called when the field is
        set on the instance, your fset method must return the value you want set,
        this is different than Python's built-in @property setter because the
        fset method *NEEDS* to return something