Lösung zur Aufgabe: Methoden in PKW-Klasse einbauen
Hier der fertige Code. Es wurden auch die entsprechenden Anmerkungen als Docstrings gemacht. Dadurch kann die Hilfe entsprechend ausgegeben werden. Daher bitte bis zum Ende von diesem Kapitel lesen ;).
class Pkw():
""" Klasse für das Erstellen von Personenkraftwagen """
def __init__(self, farbe, baujahr, kmstand, sitze, marke):
""" Eigenschaften farbe, baujahr, kmstand, Sitzplätze, Marke erfassen """
self.farbe = farbe
self.baujahr = baujahr
self.kmstand = kmstand
self.sitze = sitze
self.marke = marke
def hupen(self):
""" hier sollte noch eine MP3-Datei ausgegeben werden """
print("Trööt")
def fahren(self, km):
""" wie viele KM gefahren werden, was dem Tachostand aufaddiert wird """
self.kmstand += km
print("Ich fahre ", km, " Kilometer")
print("Insgesamt bin ich ", self.kmstand ," gefahren")
def parken(self):
""" neben fahren schon das größere Problem in Städten """
print("Ich habe eine Parkplatz gefunden")
def kilometerstand(self):
""" Ausgabe des KM-Standes vom Tacho """
print("Ich habe ", str(self.kmstand) ," auf dem Tacho")
trabi = Pkw("rot", 1981, 143000, 4, "Trabi")
trabi.hupen()
trabi.kilometerstand()
trabi.fahren(5)
trabi.kilometerstand()
trabi.parken()
Jetzt können wir uns die Hilfe-Funktion zu dieser Klasse ausgeben lassen und erhalten die von uns eingegebene Erklärung zur Klasse und Methoden:
….
trabi.kilometerstand()
trabi.parken()
print(help(Pkw))
Und wir bekommen diese Ausgabe:
Help on class Pkw in module __main__:
class Pkw(builtins.object)
| Pkw(farbe, baujahr, kmstand, sitze, marke)
|
| Klasse für das Erstellen von Personenkraftwagen
|
| Methods defined here:
|
| __init__(self, farbe, baujahr, kmstand, sitze, marke)
| Eigenschaften farbe, baujahr, kmstand, Sitzplätze, Marke erfassen
|
| fahren(self, km)
| weiviel KM gefahren werden, was dem Tachostand aufaddiert wird
|
| hupen(self)
| hier sollte noch eine MP3-Datei ausgegeben werden
|
| kilometerstand(self)
| Ausgabe des KM-Standes vom Tacho
|
| parken(self)
| neben fahren schon das größere Problem in Städten
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
Zusätzlich können wir uns noch die enthaltenen Methoden der Klasse und des erzeugten Objekts anzeigen lassen über die Python-Anweisung dir()
. Auch das packen wir ans Ende dazu:
….
trabi.kilometerstand()
trabi.parken()
print(help(Pkw))
print(dir(Pkw))
print(dir(trabi))
Für die Klasse dir(Pkw)
erhalten wir folgende Informationen:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fahren', 'hupen', 'kilometerstand', 'parken']
Es sind alle von uns definierten Methoden von fahren, hupen bis parken aufgeführt.
Schauen wir uns die Ausgabe von dem Objekt mit dir(trabi)
an, dann haben wir zusätzlich neben den Methoden auch die Eigenschaften aufgeführt:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'baujahr', 'fahren', 'farbe', 'hupen', 'kilometerstand', 'kmstand', 'marke', 'parken', 'sitze']