282
Objekte und Methoden
Kapitel
11
wäre ganz durcheinander und würde sich denken: Was für ein Chaot war
da am Werk! Man kann sich nicht einmal darauf verlassen, dass ein Na-
me, der mit einem Großbuchstaben beginnt, eine Klasse bezeichnet. Und
was soll nun
zeichner()
sein? Ein normaler Funktionsaufruf oder etwa
doch der Aufruf eines Konstruktors einer Klasse, deren Name mit einem
Kleinbuchstaben beginnt?
Python hat eine sehr umfangreiche Klassenbibliothek, in der ganz unter-
schiedliche Arten von Objekten schon vordefiniert sind: nicht nur Turtles,
sondern auch Knöpfe, Schieber und Fenster für Benutzeroberflächen oder
ganze Webserver (ja, echt!), um die Welt mit Informationen zu versorgen.
Python gestattet dir aber auch, eigene Klassen zu programmieren. Mit de-
nen kannst du dann sozusagen selbst entworfene Objekte herstellen.
In diesem Kapitel werden wir noch mit einigen unterschiedlichen Typen von
Objekten arbeiten und am Ende werde ich die grundlegenden Tatsachen
über Objekte und Methoden nochmals zusammenfassen.
Zunächst aber machen wir aus unserem eben erzeugten Vier-Turtle-Muster
noch ein kleines Programm:
Vier dynamische Spiralen
Wenn wir die Anweisungen des vorigen Abschnittes in ein Skript schreiben,
erhalten wir folgendes Skript
vierturtles.py
:
from turtle import *
alex = Turtle()
bert = Turtle()
alex.forward(50)
bert.left(90)
bert.color("red")
bert.forward(50)
carl = Turtle()
carl.color("green")
carl.left(180)
carl.forward(50)
dinu = Turtle()
dinu.left(270)
283
Vier dynamische Spiralen
dinu.color("blue")
dinu.forward(50)
kroeten = (alex, bert, carl, dinu)
for krot in kroeten:
krot.pensize(3)
krot.right(30)
for i in range(3):
for krot in kroeten:
krot.forward(100)
krot.left(120)
Daraus soll ein Programm
dynaspiralen.py
werden, bei dem die vier
Turtles »gleichzeitig« vier nach innen verlaufende Spiralen zeichnen. Au-
ßerdem sollen sie auf dem Weg zum Startpunkt der Spiralen nicht zeich-
nen.
>
Speichere das Skript
vierturtles.py
als
dynaspiralen_arbeit.py
ab.
Schlüssel für die paar Änderungen, die dazu nötig sind, ist die Verwendung
von
range()
mit drei Parametern. (Denke an die Fragen am Ende von Ka-
pitel 7.)
>
Mach mit, um dir in Erinnerung zu rufen, wie das dritte Argument von
range()
, die Schrittweite, arbeitet:
>>> tuple(range(3,30,5))
(3, 8, 13, 18, 23, 28)
>>> tuple(range(30, 3, -5))
(30, 25, 20, 15, 10, 5)
>>> tuple(range(100, 65, -5))
(100, 95, 90, 85, 80, 75, 70)
Das passt doch! Wir lassen die Turtle für jede dieser Zahlen eine
for-
ward()
-Anweisung ausführen. Die Striche werden dann immer kürzer. Es
erfordert folgende Änderung in der letzten Schleife:
for laenge in range(100, 0, -5):
for krot in kroeten:
krot.forward(laenge)
krot.left(120)
Und was den Code davor betrifft: da färben und drehen wir – wie gehabt –
jede Turtle individuell, aber die vier
forward(50)
-Schritte zu den Start-
284
Objekte und Methoden
Kapitel
11
punkten der Spiralen verschieben wir (mit passendem
penup()
/
pen-
down())
in die erste Schleife. Wenn wir auch noch die Geschwindigkeit
auf maximal stellen und die Turtle verstecken wollen, ergibt sich für diese:
for krot in kroeten:
krot.hideturtle()
krot.speed(0)
krot.penup()
krot.forward(50) # ähnlich wie jump()
krot.pendown()
krot.pensize(3)
krot.right(30)
Wenn du diese Änderungen vornimmst und das Programm laufen lässt,
sollte sich folgendes Bild ergeben:
Gleichzeitig gezeichnet? Ganz gleichzeitig geht es wohl nicht. Wir konnten
es aber immerhin so einrichten, dass abwechselnd immer eine andere Turtle
eine Dreiecksseite zeichnet.
Noch etwas »gleichzeitiger« geht es, wenn wir die Ablaufverfolgung aus-
schalten. Bisher haben wir dafür die
tracer()
Funktion verwendet. Dieser
entspricht aber keine
Turtle
-Methode. Denn die Ablaufverfolgung kann
man nicht für einzelne Turtles, sondern nur für das ganze Turtle-Grafik-
Fenster aus- und einschalten.
Das wollen wir nun auch »objektorientiert« lösen. Dafür gibt es im
turtle
-
Modul die Klasse
Screen
. Diese importieren wir auch und erzeugen gleich
ein
Screen
-Objekt. Dieses hat eine Methode
tracer()
.

Get Python für Kids now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.