ca-class-simple

Übersicht: Python & Blender


Lernziel

In der Welt der objektorientierten Programmierung werden Teile eines Models in Klassen abgebildet. Das hat viele Vorteile und die wichtigsten Regeln werden hier gezeigt.

Handlungsanweisungen

Aufgaben:
  1. Wie wird auf Wikipeida der Begriff »Objectorientierte Programmierung« definiert?
  2. Setze die Klasse, wie in der Schritt für Schritt-Anleitung gezeigt, zusammen.
  3. Gib einen anderen Text aus.
  4. Benenne die Klasse passend zum ausgegebenen Text um.
  5. Ändere den Namen für den Aufruf der Klasse.

Die erste Klasse

Dieses Beispiel ist aus dem Kapitel der Blender API entnommen.

Die Datei als Ganzes:

blender-extended/simple_class.py (Source)

import bpy


class HelloWorldOperator(bpy.types.Operator):
    bl_idname = "wm.hello_world"
    bl_label = "Minimal Operator"

    def execute(self, context):
        print("Hello World")
        return {'FINISHED'}

bpy.utils.register_class(HelloWorldOperator)

# test call to the newly defined operator
bpy.ops.wm.hello_world()

Die Klasse mit Erläuterungen, Schritt für Schritt...

Eine Klassendefinition wird mit dem Schlüsselwort class eingeleitet, es folgt ein selbstgewählter Klassenname und zum Schluss ein Paar runde Klammern. Wie in unserem Fall kann die Klasse auch Eigenschaften einer anderen Klasse erben, hier also von bpy.types.Operator. Der Doppelpunkt markiert den Start des Blocks, die nächste(n) Zeile(n) müssen eingerückt werden.

blender-extended/simple_class.py (Source)

class HelloWorldOperator(bpy.types.Operator):

Es folgen zwei blendertypische Variablen, die für die spätere Integration der eigenen Klasse, in das Blender-System benötigt werden.

blender-extended/simple_class.py (Source)

    bl_idname = "wm.hello_world"
    bl_label = "Minimal Operator"

Keine Klasse ohne Methoden. Mit dem Schlüsselwort def wird eine Methode eingeleitet, als Parameter wird an der ersten Stelle self eingetragen. Mit self wird die Zugehörigkeit der Funktion zur Klasse definiert. In diesem Beispiel ist der zweite Parameter context wieder ein in Blender definiertes Objekt. Die Funktion macht nicht wirklich viel. Wiederum blendertypisch, gibt die Funktion mit return den Wert {'FINISHED'} zurück.

blender-extended/simple_class.py (Source)

    def execute(self, context):
        print("Hello World")
        return {'FINISHED'}

Zu guter Letzt, wird die neue Klasse im Blendersystem registriert und mit einer Testanweisung auch gleich noch ausgeführt. Das Ergebnis kann in der Konsole betrachtet werden. Dort sollte sich das Hello World wiederfinden (Nicht vergessen Blender aus einer Konsole heraus zu starten, um die print-Ausgaben sehen zu könnnen).

blender-extended/simple_class.py (Source)

bpy.utils.register_class(HelloWorldOperator)

# test call to the newly defined operator
bpy.ops.wm.hello_world()

Kommentare