Python Spickzettel für Klassen und Objekten

Python ist eine universelle, vielseitige und beliebte Programmiersprache. Sie eignet sich hervorragend als Einstiegssprache, da sie prägnant und leicht zu lesen ist. Ich persönlich schätze sie vor allem für die vielseitige Einsetzbarkeit, da sie für alles von der Web- über die Softwareentwicklung bis hin zu wissenschaftlichen Anwendung verwendet werden kann.

Hier teile ich meinen persönlichen Spickzettel zu Klassen und Objekten mit euch. Er hat keinerlei Anspruch auf Vollständigkeit.

Python ist eine objektorientierte Programmiersprache.

Fast alles in Python ist ein Objekt, mit seinen Eigenschaften und Methoden.

Eine Klasse ist wie ein Objektkonstruktor oder ein “Bauplan” für die Erstellung von Objekten.

Um eine Klasse zu erstellen, verwenden Sie das Schlüsselwort class:

class MyClass:
  x = 5

Jetzt können wir die Klasse MyClass verwenden, um Objekte zu erstellen:

Die __init__() Funktion

Bei den obigen Beispielen handelt es sich um Klassen und Objekte in ihrer einfachsten Form, die in realen Anwendungen nicht wirklich nützlich sind.

Um die Bedeutung von Klassen zu verstehen, müssen wir die eingebaute Funktion __init__() verstehen.

Alle Klassen haben eine Funktion namens __init__(), die immer ausgeführt wird, wenn die Klasse gestartet wird.

Verwenden Sie die Funktion __init__(), um den Objekteigenschaften Werte zuzuweisen oder andere Operationen durchzuführen, die bei der Erstellung des Objekts notwendig sind.

Erstellen Sie eine Klasse namens Person und verwenden Sie die Funktion __init__(), um Werte für Name und Alter zuzuweisen:

Die Funktion __init__() wird automatisch jedes Mal aufgerufen, wenn die Klasse verwendet wird, um ein neues Objekt zu erstellen.

Objekt-Methoden

Objekte können auch Methoden enthalten. Methoden in Objekten sind Funktionen, die zum Objekt gehören.

Wir wollen eine Methode in der Klasse Person erstellen:

Fügen Sie eine Funktion ein, die eine Begrüßung ausgibt, und führen Sie sie auf dem Objekt p1 aus:

Das Self Parameter

Der self-Parameter ist ein Verweis auf die aktuelle Instanz der Klasse und wird für den Zugriff auf Variablen verwendet, die zur Klasse gehören.

Er muss nicht self heißen, Sie können ihn beliebig nennen, aber er muss der erste Parameter jeder Funktion der Klasse sein.

Klassenattribute und -methoden

Klassen in Python bieten eine effektive Möglichkeit, Daten (Attribute) und Funktionen (Methoden) zu kapseln, die logisch zusammengehören. Durch die Definition von Klassenattributen und -methoden können Entwickler wiederverwendbare Codeblöcke erstellen, die die Lesbarkeit und Wartbarkeit von Programmen verbessern.

Klassenattribute

  • Definition: Klassenattribute sind Variablen, die innerhalb einer Klasse definiert werden und für alle Instanzen dieser Klasse gemeinsam sind. Sie werden verwendet, um Eigenschaften zu definieren, die für alle Objekte einer Klasse gelten, nicht nur für einzelne Instanzen.
  • Zugriff: Auf Klassenattribute kann sowohl über Instanzen als auch direkt über die Klasse zugegriffen werden.
  • Anwendungsbeispiel: Ein Klassenattribut könnte beispielsweise eine Zählvariable sein, die die Anzahl der erstellten Instanzen einer Klasse verfolgt.

Klassenmethoden

  • Definition: Klassenmethoden sind Funktionen, die innerhalb einer Klasse definiert werden und auf Klassenattribute zugreifen können. Im Gegensatz zu Instanzmethoden, die auf spezifische Objektinstanzen angewendet werden, wirken Klassenmethoden auf die Klasse als Ganzes.
  • Dekoration: Klassenmethoden werden in Python mit dem @classmethod-Dekorateur oberhalb der Methodendefinition markiert. Das erste Argument einer Klassenmethode ist immer cls, das auf die Klasse selbst verweist, ähnlich wie self auf die Instanz verweist.
  • Anwendungsbeispiel: Eine Klassenmethode könnte verwendet werden, um eine Fabrikmethode zu implementieren, die verschiedene Instanzen der Klasse basierend auf unterschiedlichen Eingabeparametern erstellt.

Beispielcode

class MyClass:
    common_value = 10  # Klassenattribut

    def __init__(self, value):
        self.value = value  # Instanzattribut

    @classmethod
    def access_common_value(cls):
        return cls.common_value  # Zugriff auf das Klassenattribut

    @classmethod
    def set_common_value(cls, new_value):
        cls.common_value = new_value  # Ändern des Klassenattributs

# Erzeugen von Instanzen der MyClass
instance1 = MyClass(5)
instance2 = MyClass(15)

# Zugriff auf Klassenattribut
print(MyClass.common_value)  # 10
print(instance1.common_value)  # 10

# Verwendung einer Klassenmethode
print(MyClass.access_common_value())  # 10
MyClass.set_common_value(20)
print(MyClass.access_common_value())  # 20

In diesem Beispiel wird die Verwendung von Klassenattributen und -methoden veranschaulicht. common_value ist ein Klassenattribut, das von allen Instanzen von MyClass geteilt wird. access_common_value und set_common_value sind Klassenmethoden, die das Klassenattribut common_value lesen bzw. ändern.