Python - Klassen und Objekte
Hallo daar, aufstrebende Python-Programmierer! Heute werden wir auf eine aufregende Reise in die Welt der objektorientierten Programmierung (OOP) in Python einsteigen. schnallen Sie sich an, denn wir sind dabei, Ihre Meinung über Code zu verändern!
Was ist eine Klasse in Python?
Stellen Sie sich vor, Sie bauen einen virtuellen Zoo. Sie würden nicht jedes Tier von Grund auf erstellen, oder? Hier kommt es den Klassen zu gute!
Eine Klasse in Python ist wie ein Bauplan oder eine Vorlage zum Erstellen von Objekten. Sie definiert eine Reihe von Attributen und Methoden, die die Objekte dieser Klasse haben.
Lassen Sie uns eine einfache Klasse erstellen, um einen Hund darzustellen:
class Dog:
def __init__(self, name, rasse):
self.name = name
self.rasse = rasse
def bellt(self):
print(f"{self.name} sagt Wuff!")
In diesem Beispiel ist Dog
unsere Klasse. Sie hat Attribute wie name
und rasse
und eine Methode namens bark()
.
Erstellen von Klassen in Python
Das Erstellen einer Klasse ist so einfach wie das Verwenden des Schlüsselworts class
gefolgt vom Klassennamen. Lassen Sie uns eine detaillierte Car
Klasse erstellen:
class Car:
def __init__(self, marke, modell, jahr):
self.marke = marke
self.modell = modell
self.jahr = jahr
self.fahrzeugkilometer = 0
def fahren(self, entfernung):
self.fahrzeugkilometer += entfernung
print(f"Fuhr {entfernung} Kilometer. Gesamt: {self.fahrzeugkilometer} Kilometer")
def hupe(self):
print("Piep piep!")
Hier ist __init__
eine spezielle Methode, die als Konstruktor bezeichnet wird. Sie wird aufgerufen, wenn wir ein neues Objekt dieser Klasse erstellen.
Was ist ein Objekt?
Wenn eine Klasse ein Bauplan ist, ist ein Objekt das tatsächliche "Ding", das aus diesem Bauplan erstellt wird. Es ist eine spezifische Instanz einer Klasse.
Erstellen von Objekten von Klassen in Python
Das Erstellen eines Objekts (auch als Instanziierung bezeichnet) ist wie das Verwenden unseres Bauplans, um etwas Reales zu erstellen. Lassen Sie uns einige Autos erstellen:
mein_auto = Car("Toyota", "Corolla", 2020)
dein_auto = Car("Honda", "Civic", 2019)
print(mein_auto.marke) # Ausgabe: Toyota
dein_auto.fahren(50) # Ausgabe: Fuhr 50 Kilometer. Gesamt: 50 Kilometer
mein_auto.hupe() # Ausgabe: Piep piep!
Jedes Auto ist ein separates Objekt mit seiner eigenen Reihe von Attributen und Methoden.
Zugriff auf Attribute von Objekten in Python
Wir können auf die Attribute eines Objekts mit Punkt-Notation zugreifen. Lassen Sie uns unser Auto untersuchen:
print(f"Mein Auto ist ein {mein_auto.jahr} {mein_auto.marke} {mein_auto.modell}")
# Ausgabe: Mein Auto ist ein 2020 Toyota Corolla
Eingebaute Klassenattribute in Python
Python-Klassen kommen mit einigen eingebauten Attributen. Lassen Sie uns sie erkunden:
class MyClass:
x = 5
print(MyClass.__name__) # Ausgabe: MyClass
print(MyClass.__module__) # Ausgabe: __main__
print(MyClass.__dict__) # Ausgabe: {'__module__': '__main__', 'x': 5, ...}
Eingebaute Klassen von Python-Datentypen
Wussten Sie, dass sogar grundlegende Python-Typen Objekte sind? Lassen Sie uns es sich ansehen:
print(type(5)) # Ausgabe: <class 'int'>
print(type("Hallo")) # Ausgabe: <class 'str'>
print(type([1, 2, 3])) # Ausgabe: <class 'list'>
Alles in Python ist ein Objekt!
Müllsammlung (Zerstören von Objekten) in Python
In Python müssen wir keine Objekte manuell zerstören. Python's Müllsammler kümmert sich automatisch darum, wenn ein Objekt nicht mehr verwendet wird.
import gc
# Erstellen eines Objekts
mein_auto = Car("Toyota", "Corolla", 2020)
# Entfernen des Verweises
mein_auto = None
# Müllsammlung erzwingen (normalerweise nicht notwendig)
gc.collect()
Datenversteckung in Python
In der OOP möchten wir oft den Zugriff auf bestimmte Attribute steuern. Python verwendet eine Konvention, Attributen Präfixe mit Unterstrichen hinzuzufügen:
class BankAccount:
def __init__(self, balance):
self._balance = balance # Geschütztes Attribut
self.__secret = "shh" # Privates Attribut
def einzahlen(self, betrag):
self._balance += betrag
def get_balance(self):
return self._balance
konto = BankAccount(1000)
print(konto._balance) # Ausgabe: 1000 (aber wir sollten das nicht tun!)
print(konto.__secret) # Dies wird eine AttributeError auslösen
Hier ist eine Tabelle, die die von uns behandelten Methoden zusammenfasst:
Methode | Beschreibung |
---|---|
__init__(self, ...) |
Konstruktor-Methode, wird aufgerufen, wenn ein neues Objekt erstellt wird |
__str__(self) |
Gibt eine Zeichenkettenrepräsentation des Objekts zurück |
__repr__(self) |
Gibt eine detaillierte Zeichenkettenrepräsentation des Objekts zurück |
__len__(self) |
Definiert das Verhalten für die eingebaute len() -Funktion |
__getitem__(self, key) |
Definiert das Verhalten für Indexoperationen |
__setitem__(self, key, value) |
Definiert das Verhalten für das Zuweisen von indizierten Werten |
Und so ist es! Sie haben gerade Ihre ersten Schritte in die Welt der objektorientierten Programmierung in Python gemacht. Denken Sie daran, Übung macht den Meister. Versuchen Sie, Ihre eigenen Klassen und Objekte zu erstellen, und bald werden Sie komplexe, effiziente Programme wie ein Profi erstellen!
Credits: Image by storyset