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!

Python - Classes & Objects

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