Title: Attribute und Methoden

Ein Objekt hat zwei Arten von Bestandteilen: **Attribute** und **Methoden**.

* **Attribute** speichern den **Zustand** des Objekts – also seine aktuellen Daten.
* **Methoden** beschreiben das **Verhalten** des Objekts – also was es kann.

### Attribute: den Zustand lesen und setzen

Auf Attribute greifst du mit dem Punkt-Operator zu:

import turtle

t = turtle.Turtle()

# Attribut lesen:
print(t.pensize) # aktuelle Stiftgröße anzeigen

# Attribut setzen:
t.pensize = 4 # Stiftgröße auf 4 setzen
t.forward(80)

Jede Zuweisung der Form `objekt.attribut = wert` verändert den Zustand
dieses einen Objekts.

### Methoden: Verhalten aufrufen

Methoden rufst du wie Funktionen auf – mit Klammern und Argumenten:

import turtle

t = turtle.Turtle()

t.color("navy") # Farbe ändern
t.forward(100) # 100 Schritte vorwärts
t.right(90) # 90° nach rechts drehen
t.forward(60)

Manche Methoden **geben einen Wert zurück**:

import turtle

t = turtle.Turtle()
t.forward(80)
t.right(45)

pos = t.position() # gibt die aktuelle Position zurück
richtung = t.heading() # gibt die aktuelle Richtung zurück

print(pos)
print(richtung)

### Attribut oder Methode – wie unterscheide ich sie?

t.pensize ← Attribut (kein Aufruf, keine Klammern)
t.pensize = 4 ← Attribut setzen
t.forward(100) ← Methode (Aufruf mit Klammern)
t.position() ← Methode (Aufruf, gibt Wert zurück)

Die Faustregel: **Klammern = Methode, keine Klammern = Attribut**.

!!! note Ausnahme: Methoden ohne Argumente
Auch `t.position()` und `t.heading()` haben Klammern, obwohl kein Argument
übergeben wird. Die leeren Klammern zeigen: Das ist ein Methodenaufruf.

### Alles zusammen

import turtle

t = turtle.Turtle()

t.shape("turtle") # Methode: Form auf echte Schildkröte setzen
t.color("teal") # Methode: Farbe setzen
t.pensize = 3 # Attribut: Stiftdicke

t.penup() # Methode: Stift heben
t.goto(-60, 0) # Methode: Position setzen
t.pendown() # Methode: Stift senken

for _ in range(4):
t.forward(80)
t.right(90)

print("Position:", t.position())
print("Richtung:", t.heading())

Probiere aus: Was gibt `t.position()` nach dem Zeichnen aus?