def __setattr__(self, name, val):
    try:
        return object.__setattr__(self, name, val)
    except AttributeError:
        pass
    try:
        v = self._schema[name]
    except KeyError:
        raise AttributeError(name)
    return v.set(val)
def __setattr__(self, name, val):
    try:
        return object.__setattr__(self, name, val)
    except AttributeError:
        pass
    try:
        v = self._schema[name]
    except KeyError:
        raise AttributeError(name)
    return v.set(val)