user: How do I use Getter/Setter Example in Blender? Include parameters, examples, warnings and best practices.

assistant: es.Context`](bpy.types.Context.html#bpy.types.Context "bpy.types.Context")], None]) – Function to be called when this value is modified,
          This function must take 2 values (self, context) and return None.
          *Warning* there are no safety checks to avoid infinite recursion.
        - **get** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")], Sequence[int]]) –

          Function to be called when this value is ‘read’, and the default,
          system-defined storage is not used for this property.
          This function must take 1 value (self) and return the value of the property.
        - **set** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), tuple[int, …]], None]) –

          Function to be called when this value is ‘written’, and the default,
          system-defined storage is not used for this property.
          This function must take 2 values (self, value) and return None.
        - **get_transform** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), Sequence[int], bool], Sequence[int]]) –

          Function to be called when this value is ‘read’,
          if some additional processing must be performed on the stored value.
          This function must take three arguments (self, the stored value,
          and a boolean indicating if the property is currently set),
          and return the final, transformed value of the property.
        - **set_transform** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), Sequence[int], Sequence[int], bool], Sequence[int]]) –

          Function to be called when this value is ‘written’,
          if some additional processing must be performed on the given value before storing it.
          This function must take four arguments (self, the given value to store,
          the currently stored value (‘raw’ value, without any `get_transform` applied to it),
          and a boolean indicating if the property is currently set),
          and return the final, transformed value of the property.

bpy.props.PointerProperty(*type*, *\**, *name=''*, *description=''*, *translation_context='\*'*, *options={'ANIMATABLE'}*, *override=set()*, *tags=set()*, *poll=None*, *update=None*)
:   Returns a new pointer property definition.

    Parameters:
    :   - **type** (type[[`bpy.types.PropertyGroup`](bpy.types.PropertyGroup.html#bpy.types.PropertyGroup "bpy.types.PropertyGroup") | [`bpy.types.ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")]) – A subclass of a property group or ID types.
        - **name** (*str*) – Name used in the user interface.
        - **description** (*str*) – Text used for the tooltip and api documentation.
        - **translation_context** (*str*) – Text used as context to disambiguate translations.
        - **options** (*set**[**str**]*) – Enumerator in [Property Flag Items](bpy_types_enum_items/property_flag_items.html#rna-enum-property-flag-items).
        - **override** (*set**[**str**]*) – Enumerator in [Property Override Flag Items](bpy_types_enum_items/property_override_flag_items.html#rna-enum-property-override-flag-items).
        - **tags** (*set**[**str**]*) – Enumerator of tags that are defined by parent class.
        - **poll** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`bpy.types.ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")], bool]) –

          Function that determines whether an item is valid for this property.
          The function must take 2 values (self, object) and return a boolean.
        - **update** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`bpy.types.Context`](bpy.types.Context.html#bpy.types.Context "bpy.types.Context")], None]) – Function to be called when this value is modified,
          This function must take 2 values (self, context) and return None.
          *Warning* there are no safety checks to avoid infinite recursion.

bpy.props.RemoveProperty(*cls*, *attr*)
:   Removes a dynamically defined property.

    Parameters:
    :   - **cls** (*type*) – The class containing the property (must be a positional argument).
        - **attr** (*str*) – Property name (must be passed as a keyword).

bpy.props.StringProperty(*\**, *name=''*, *description=''*, *translation_context='\*'*, *default=''*, *maxlen=0*, *options={'ANIMATABLE'}*, *override=set()*, *tags=set()*, *subtype='NONE'*, *update=None*, *get=None*, *set=None*, *get_transform=None*, *set_transform=None*, *search=None*, *search_options={'SUGGESTION'}*)
:   Returns a new string property definition.

    Parameters:
    :   - **name** (*str*) – Name used in the user interface.
        - **description** (*str*) – Text used for the tooltip and api documentation.
        - **translation_context** (*str*) – Text used as context to disambiguate translations.
        - **default** (*str*) – initializer string.
        - **maxlen** (*int*) – maximum length of the string.
        - **options** (*set**[**str**]*) – Enumerator in [Property Flag Items](bpy_types_enum_items/property_flag_items.html#rna-enum-property-flag-items).
        - **override** (*set**[**str**]*) – Enumerator in [Property Override Flag Items](bpy_types_enum_items/property_override_flag_items.html#rna-enum-property-override-flag-items).
        - **tags** (*set**[**str**]*) – Enumerator of tags that are defined by parent class.
        - **subtype** (*str*) – Enumerator in [Property Subtype String Items](bpy_types_enum_items/property_subtype_string_items.html#rna-enum-property-subtype-string-items).
        - **update** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`bpy.types.Context`](bpy.types.Context.html#bpy.types.Context "bpy.types.Context")], None]) – Function to be called when this value is modified,
          This function must take 2 values (self, context) and return None.
          *Warning* there are no safety checks to avoid infinite recursion.
        - **get** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")], str]) –

          Function to be called when this value is ‘read’, and the default,
          system-defined storage is not used for this property.
          This function must take 1 value (self) and return the value of the property.
        - **set** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), str], None]) –

          Function to be called when this value is ‘written’, and the default,
          system-defined storage is not used for this property.
          This function must take 2 values (self, value) and return None.
        - **get_transform** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), str, bool], str]) –

          Function to be called when this value is ‘read’,
          if some additional processing must be performed on the stored value.
          This function must take three arguments (self, the stored value,
          and a boolean indicating if the property is currently set),
          and return the final, transformed value of the property.
        - **set_transform** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), str, str, bool], str]) –

          Function to be called when this value is ‘written’,
          if some additional processing must be performed on the given value before storing it.
          This function must take four arguments (self, the given value to store,
          the currently stored value (‘raw’ value, without any `get_transform` applied to it),
          and a boolean indicating if the property is currently set),
          and return the final, transformed value of the property.
        - **search** (Callable[[[`bpy.types.bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`bpy.types.Context`](bpy.types.Context.html#bpy.types.Context "bpy.types.Context"), str], Iterable[str | tuple[str, str]]]) –

          Function to be called to show candidates for this string (shown in the UI).
          This function must take 3 values (self, context, edit_text)
          and return a sequence, iterator or generator where each item must be:

          - A single string (representing a candidate to display).
          - A tuple-pair of strings, where the first is a candidate and the second
            is additional information about the candidate.
        - **search_options** (*set**[**str**]*) –

          Set of strings in:

          - ’SORT’ sorts the resulting items.
          - ’SUGGESTION’ lets the user enter values not found in search candidates.
            **WARNING** disabling this flag causes the search callback to run on redraw,
            so only disable this flag if it’s not likely to cause performance issues.