def __set__(self, obj, value):
    if (not self.fset):
        raise AttributeError("can't set attribute")
    type_ = type(obj)
    return self.fset.__get__(obj, type_)(value)
def __set__(self, obj, value):
    if (not self.fset):
        raise AttributeError("can't set attribute")
    type_ = type(obj)
    return self.fset.__get__(obj, type_)(value)