Deine ersten Klassen und Objekte · Übung
Erstelle gültige Frageinstanzen
Die erste Klasse Question gab uns eine neue Art von Wert, garantierte aber noch nicht, dass eine Frage vollständig war. Wir erstellten eine leere Instanz und fügten ihre Attribute nachträglich hinzu:
question = Question()
question.prompt = "What does len('cat') return?"
question.answer = "3"
Da diese Schritte getrennt waren, konnte man leicht zu früh aufhören und die Antwort weglassen:
question = Question()
question.prompt = "What does len('cat') return?"
Nichts verlangte die zweite Zuweisung. Wir haben das Problem uneinheitlicher Schlüssel gelöst, aber ein ähnliches Problem mit unvollständigen Objekten geschaffen.
Um jedem Objekt beim Erstellen seinen Anfangszustand zu geben, kann eine Klasse eine besondere Methode namens __init__ definieren. Setze das Beispiel Label aus der vorigen Lektion fort:
class Label:
def __init__(self, text, color):
self.text = text
self.color = color
Python ruft __init__ auf, wenn eine neue Instanz erstellt wird:
label = Label(
"Question 1",
"blue",
)
Die beiden Argumente liefern die Anfangswerte. Innerhalb von __init__ werden diese Werte als Attribute am neuen Objekt gespeichert. Die Übung überträgt dieses Konstruktormuster auf Question.
Lies self vorerst als „diese Instanz“. Wir untersuchen es genauer, nachdem die Klasse eine weitere Methode hat.
Eine Klasse, mehrere Objekte
Dieselbe Klasse kann viele unabhängige Instanzen erstellen:
first = Label("Question 1", "blue")
second = Label("Question 2", "green")
Beide Objekte haben denselben Typ und dieselben Attributnamen. Ihre Attributwerte können sich unterscheiden.

Was gibt dieser Code aus?
class Label:
def __init__(self, text, color):
self.text = text
self.color = color
first = Label("Question 1", "blue")
second = Label("Question 2", "green")
print(first.color)
print(second.color)Erforderliche Konstruktorargumente validieren nicht jeden möglichen String. Sie sorgen aber dafür, dass jedes auf normalem Weg erstellte Objekt mit denselben verlässlichen Attributen beginnt. Kapitel 5 ergänzt strengere Regeln für einen gültigen Zustand.
Aufgabe
Vervollständige __init__ so, dass jede neue Frage ihr eigenes prompt und answer speichert.
Führe das Programm aus. Du solltest den ersten Fragetext und die zweite Antwort auf getrennten Zeilen sehen.