The use of strict class naming is more prevalent within blenders source code than within third party addons. While CamelCase is common I don't think there is a strong convention for class names, however, the name used in bl_idname
is visible and used within blender so does have some conventions, with a view to also help prevent naming clashes.
For a panel the convention is CATEGORY_PT_name
and if not set will be the class name. Similarly, menus use CATEGORY_MT_name
. Common categories are Object, Mesh and Material. Both of these can often be found duplicated into class names, often using class names instead of setting bl_idname
. Within blender's builtin operators you will find most use this naming (with CAT_OT_name
) for operator classes. There are also examples of CAT_UL_name
used for UILists.
For an operator, the bl_idname
must be two words separated by a .
, the first word should be a category while the second is the operator name. Operator bl_idnames
are added to bpy.ops
so if you have bl_idname='mesh.beautify'
then the operator can be called from python with bpy.ops.mesh.beautify()
and is added to a panel with layout.operator('mesh.beautify')
.