After writing add-ons for like the past 8 years, I didn't realize that the first parameter of update callbacks of operator properties, conventionally named `self` is not actually what a Python coder would expect from a variable named `self`. I tried to document that here. This is in response to [what I thought was a bug](https://projects.blender.org/blender/blender/issues/110239). Pull Request: https://projects.blender.org/blender/blender/pulls/110242
33 lines
872 B
Python
33 lines
872 B
Python
"""
|
|
Update Example
|
|
++++++++++++++
|
|
|
|
It can be useful to perform an action when a property is changed and can be
|
|
used to update other properties or synchronize with external data.
|
|
|
|
All properties define update functions except for CollectionProperty.
|
|
|
|
.. warning::
|
|
Remember that these callbacks may be executed in threaded context.
|
|
|
|
.. warning::
|
|
If the property belongs to an Operator, the update callback's first
|
|
parameter will be an OperatorProperties instance, rather than an instance
|
|
of the operator itself. This means you can't access other internal functions
|
|
of the operator, only its other properties.
|
|
|
|
"""
|
|
|
|
import bpy
|
|
|
|
|
|
def update_func(self, context):
|
|
print("my test function", self)
|
|
|
|
|
|
bpy.types.Scene.testprop = bpy.props.FloatProperty(update=update_func)
|
|
|
|
bpy.context.scene.testprop = 11.0
|
|
|
|
# >>> my test function <bpy_struct, Scene("Scene")>
|