-
Notifications
You must be signed in to change notification settings - Fork 2
3.1 Objektorientiertes Programmieren
Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das auf den Konzepten von "Objekten" und "Klassen" basiert. Diese Konzepte ermöglichen es, Software modularer, wartbarer und wiederverwendbarer zu gestalten.
Das ist ein sehr wichtiger Begriff zu verstehen, weil alles in Python ein Objekt ist. Dies schließt grundlegende Datentypen wie Zahlen und Zeichenketten, komplexere Strukturen wie Listen, Dictionaries und Klassen, sowie sogar Funktionen und Module ein.
class Auto:
# alle Klasse (außer Subklasse) benötigt __init__
# wenn mann Eigenschaften initialisiern will
def __init__(self, marke, modell):
self.marke = marke
self.modell = modell
def beschreiben(self): # self muss im jeden Methode übergeben werden
print(f"Dies ist ein {self.marke} {self.modell}.")
mein_auto = Auto("Tesla", "Model S")
mein_auto.beschreiben() Dies ist ein Tesla Model S.
Eine Subklasse (oder abgeleitete Klasse) in Python ist eine Klasse, die von einer anderen Klasse (der Basisklasse oder Elternklasse) erbt. Das bedeutet, dass die Subklasse alle Attribute und Methoden der Basisklasse übernimmt und zusätzlich eigene Attribute und Methoden hinzufügen oder die geerbten Methoden überschreiben kann.
class ElektroAuto(Auto):
# initialisieren Sie Subklasse Eigenschaften wie batterie_kapazitaet
def __init__(self, marke, modell, batterie_kapazitaet):
# super().__init__ initialisiert die Eingenschaften von Auto
# und löst automatisch die richtige Klasse und Instanz auf
super().__init__(marke, modell)
self.batterie_kapazitaet = batterie_kapazitaet
# Subklasse Methode
def beschreiben(self):
super().beschreiben() # beschreiben() Methode von Auto Klasse
print(f"Batteriekapazität von {self.batterie_kapazitaet} kWh.")
mein_elektro_auto = ElektroAuto("Tesla", "Model 3", 75) mein_elektro_auto.beschreiben()Dies ist ein Tesla Model 3.
Batteriekapazität von 75 kWh.
Was ist super()? In Python ist super() eine eingebaute Funktion, die ein temporäres Objekt der Oberklasse zurückgibt und es Ihnen ermöglicht, deren Methoden aufzurufen.
Ist das richtig, um eine Person-Klasse zu initialisieren? Wenn nicht, bitte korrigieren Sie es.
class Person(name, alter, beruf):
def hallo(name, alter):
print(f'Hallo, {name}. Du bist {alter} Jahre alt.')
def job(name, beruf):
print(f'{name} ist {beruf}.')
Lösung
class Person: # nur Klassen sind Parameter für class, nicht Eigenschaften
def __init__(self, name, alter, beruf): # Eigenschaften-Initialisierung
self.name = name
self.alter = alter
self.beruf = beruf
def hallo(self): # Methoden brauchen self
print(f'Hallo, {self.name}. Du bist {self.alter} Jahre alt.')
def job(self):
print(f'{self.name} ist {self.beruf}.')Was ist die Ausgabe?
class Base:
def greet(self):
print("Hallo von der Basisklasse")
class Derived(Base):
def greet(self):
super().greet()
print("Hallo von der abgeleiteten Klasse")
d = Derived()
d.greet()Lösung
Hallo von der Basisklasse
Hallo von der abgeleiteten Klasse
Derived hat auch Base.greet() per super().greet(). Deswegen sieht man zwei Begrüßungen.
HTW Berlin Pytorium
ein Python Tutorium für alle, die sich für Python interessieren