Centralizing properties updates in one function? Is there any way have some more information of the prop from it's update function?
In the example below, unfortunately, self will point out to bpy.types.Scene, instead of the prop itself.
so it seem at first glance that we cannot have any information of the props from the update function, and we are forced to have one update function per prop, instead of a single centralized update function that could work with every one the prop
(Note that We can have more information from set, but of course, it will create feedback loops if we change the prop value.. )
please prove me wrong
def update(self,context):
    print(&quot;what is this prop value?&quot;)
    print(&quot;what is this prop api?&quot;)
    print(&quot;what is this prop name?&quot;)
    return None 

bpy.types.Scene._prop          : bpy.props.FloatProperty(default=1.0 , name=&quot;Prop&quot;, update=update)
bpy.types.Scene._prop_this     : bpy.props.FloatProperty(default=1.1 , name=&quot;Prop This&quot;, update=update)
bpy.types.Scene._prop_that     : bpy.props.FloatProperty(default=1.2 , name=&quot;Prop That&quot;, update=update)
bpy.types.Scene._prop_another  : bpy.props.FloatProperty(default=1.3 , name=&quot;Prop Another&quot;, update=update)
Make a generic function to create your update method.
There is another answer very similar to this by @pinkvertex could not find it.
Instead using one function as the update method, create a method factory to pass properties to.
Example code, and example run (pretty self-explanatory),
import bpy
from bpy.props import FloatProperty
from bpy.types import Scene


def update(prop):
    def update(self, context):
        print(f&quot;Update {prop} of {self}&quot;)
        return None
    return update


for prop in (&quot;prop_this&quot;, &quot;prop_that&quot;, &quot;prop_another&quot;):
    setattr(
        Scene, 
        prop,
        FloatProperty(
            default=1.0,
            name=&quot;Prop&quot;, 
            update=update(prop)
            )
        )

Sample run.
&gt;&gt;&gt; C.scene.prop_this
1.0

&gt;&gt;&gt; C.scene.prop_this = 4
Update prop_this of &lt;bpy_struct, Scene(&quot;Scene&quot;) at 0x7fc97bff8008&gt;

&gt;&gt;&gt; 

Two things re question code,

The properties are assigned to the type, not as an annotation. Use
annotations in a class definition.
Cannot create a private variable prefixed with underscore.
 &gt;&gt;&gt; bpy.types.Scene._prop = bpy.props.FloatProperty()
 Traceback (most recent call last):
 File &quot;&lt;blender_console&gt;&quot;, line 1, in &lt;module&gt;
 ValueError: bpy_struct &quot;Scene&quot; registration error: _prop could not register because the property starts with an '_'