bpy/rna api class feature
authorCampbell Barton <ideasman42@gmail.com>
Sun, 8 Nov 2009 01:13:19 +0000 (01:13 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 8 Nov 2009 01:13:19 +0000 (01:13 +0000)
commitfac2ca1c7ca26b9e7019d5c3367b1cb758ba8ca4
tree9f4b7e554ceee580d01fb22702d8b6ff01064bbf
parent30c4c4599dfb72b430a409648bb1407a0f197332
bpy/rna api class feature
- python defined classes will be used when available (otherwise automaically generated metaclasses are made as before)
- use properties rather then functions for python defined rna class's
- call the classes getattr AFTER doing an RNA lookup, avoids setting and clearing exceptions for most attribute lookups, tested UI scripts are ~25% faster.
- extending rna py classes this way is a nicer alternative to modifying the generated metaclasses in place.

Example class

--- snip
class Object(bpy.types.ID):

    def _get_children(self):
        return [child for child in bpy.data.objects if child.parent == self]

    children = property(_get_children)
--- snip

The C initialization function looks in bpy_types.py for classes matching RNA structure names, using them when available.
This means all objects in python will be instances of these classes.
Python properties/funcs defined in ID py class will also be available for subclasses for eg. (Group Mesh etc)
release/scripts/modules/bpy_ext/Mesh.py
release/scripts/modules/bpy_ext/Object.py
release/scripts/modules/bpy_ext/__init__.py
release/scripts/modules/bpy_types.py [new file with mode: 0644]
release/scripts/op/mesh.py
release/scripts/op/mesh_skin.py
source/blender/python/intern/bpy_interface.c
source/blender/python/intern/bpy_rna.c
source/blender/python/intern/bpy_rna.h