Centralizing properties updates in one function?
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 '_'