'Increment self.prop.'

def _incr(self, prop, amt=1):

    assert (not self._dirty)
    is_base_prop = (prop in self._int_props)
    is_data_prop = ((prop in self._data_int_props) or (self._int_prop_suffix and prop.endswith(self._int_prop_suffix)))
    db_prop = (prop[1:] if is_base_prop else prop)
    assert (is_base_prop or is_data_prop)
    with self.get_read_modify_write_lock() as lock:
        self.update_from_cache(lock)
        old_val = getattr(self, prop)
        new_val = (old_val + amt)
        self.__setattr__(prop, new_val, make_dirty=False)
        with TdbTransactionContext():
            if is_base_prop:
                tdb.incr_thing_prop(type_id=self.__class__._type_id, thing_id=self._id, prop=db_prop, amount=amt)
            elif ((prop in self.__class__._defaults) and (self.__class__._defaults[prop] == old_val)):
                tdb.set_thing_data(type_id=self.__class__._type_id, thing_id=self._id, brand_new_thing=False, **{db_prop: new_val})
            else:
                tdb.incr_thing_data(type_id=self.__class__._type_id, thing_id=self._id, prop=db_prop, amount=amt)
            self.write_thing_to_cache(lock)
    self.record_cache_write(event='incr')
