Is There a Way to Change a Prop with an Update Def without Calling the Update Def?
In the example, simply setting a max will do this for us

import bpy

def update_prop(self, context):
    print ("update")
    print(self.variable)


bpy.types.Object.variable  = bpy.props.IntProperty(
    name="variable",
    default=0,
    min=0,
    max=10,
    update=update_prop)


In python console

&gt;&gt;&gt; C.object.variable = 22
update
10

&gt;&gt;&gt; C.object.variable
10


If you wish to set a value and not fire an update, set the id property.  A property defined via bpy.props for example ob.prop is stored as ob["prop"] once set to non default. 

May  be better to use a getter / setter method(s)  Internal &quot;get/set&quot; function of property?

def update_prop(self, context):
    print ("update")
    self["variable"] = 4
    print(self.variable)


&gt;&gt;&gt; C.object.variable = 22
update
4

&gt;&gt;&gt; C.object.variable
4


Note this has been answered recenlty, couldn't find that one