Python: Objekte (Klassen) mit turtle
Lernen Sie, wie Sie mit Klassen eigene Objekte erstellen und diese in Turtle-Grafiken verwenden.
- Sie können erklären, was eine Klasse und ein Objekt in Python ist.Verstehen
- Sie können eine einfache Klasse mit __init__ und Methoden definieren.Anwenden
- Sie können mehrere Objekte einer Klasse erstellen und diese individuell verwenden.Anwenden
In diesem Modul lernen Sie das Konzept der objektorientierten Programmierung (OOP) kennen. Sie werden verstehen, was Klassen und Objekte sind und wie Sie damit eigene «Dinge» in Ihrem Programm erstellen können.
Mit Klassen können Sie mehrere Turtles erstellen, die unterschiedliche Eigenschaften haben – zum Beispiel verschiedene Farben oder Positionen.
Was sind Klassen und Objekte?
Stellen Sie sich vor, Sie möchten in einem Programm mehrere Turtles verwenden – jede mit einer eigenen Farbe und Position. Bisher haben Sie Unterprogramme verwendet, um Code zu organisieren. Mit Klassen können Sie noch einen Schritt weitergehen.
Eine Klasse ist wie eine Bauanleitung oder ein Bauplan. Ein Objekt ist ein konkretes «Ding», das nach dieser Bauanleitung erstellt wurde.
Beispiel aus dem Alltag:
- Klasse: Bauplan für ein Auto
- Objekt: Ihr konkretes Auto (rot, 5 Türen)
- Objekt: Das Auto des Nachbarn (blau, 3 Türen)
Eine Klasse in Python definieren
Eine Klasse wird mit dem Schlüsselwort class erstellt. Der Name beginnt mit einem Grossbuchstaben.
class MeineTurtle:
def __init__(self, farbe):
self.t = Turtle()
self.t.color(farbe)
def quadrat(self, groesse):
for i in range(4):
self.t.forward(groesse)
self.t.right(90)Note
Wichtige Begriffe:
class MeineTurtle:– Definiert eine neue Klasse__init__– Wird automatisch aufgerufen, wenn ein Objekt erstellt wirdself– Bezieht sich auf das aktuelle Objektself.t– Ein Attribut (Eigenschaft) des Objekts, hier die TurtleTurtle()– Erstellt eine neue Turtle (dankfrom turtle import *)
Objekte erstellen und verwenden
Nun können Sie mehrere Turtles erstellen, die alle die Methode quadrat haben, aber unterschiedliche Farben:
from turtle import *
class MeineTurtle:
def __init__(self, farbe):
self.t = Turtle()
self.t.color(farbe)
def quadrat(self, groesse):
for i in range(4):
self.t.forward(groesse)
self.t.right(90)
# Objekte erstellen
rot = MeineTurtle("red")
blau = MeineTurtle("blue")
# Methoden aufrufen
rot.quadrat(100)
blau.t.goto(-150, 0)
blau.quadrat(50)
done()Challenge
Aufgabe 1: Eigene Klasse erweitern
Erweitern Sie die Klasse MeineTurtle um eine Methode dreieck(self, groesse), die ein gleichseitiges Dreieck zeichnet.
Challenge
Aufgabe 2: Mehrere Turtles
Erstellen Sie drei Objekte Ihrer Klasse mit verschiedenen Farben. Lassen Sie jede Turtle eine andere Form zeichnen (Quadrat, Dreieck, Sechseck).
Challenge
Aufgabe 3: Startposition
Erweitern Sie den __init__-Konstruktor, sodass er auch eine Startposition (x, y) als Parameter akzeptiert. Die Turtle soll dann direkt an dieser Position starten.
Reflection
Reflexion
Warum sind Klassen nützlich, wenn man mehrere ähnliche Objekte braucht? Was wäre die Alternative ohne Klassen?