Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python Objektorientierte Programmierung meistern: Klassen, Vererbung, Kapselung & Polymorphie

Python Objektorientierte Programmierung

Dieser Leitfaden führt Sie durch die Kernkonzepte von Pythons objektorientierter Programmierung (OOP), komplett mit praktischen Beispielen, die veranschaulichen, wie man robusten, wiederverwendbaren Code erstellt.

Video: Objektorientierte Programmierung in Python

Objektorientierte Programmierung

Python ist eine Multi-Paradigmen-Sprache, die mehrere Programmierstile unterstützt. Einer der mächtigsten Ansätze ist die Modellierung von Problemen mithilfe von Objekten – ein Ansatz, bekannt als Objektorientierte Programmierung (OOP).

Ein Objekt besitzt zwei wesentliche Eigenschaften:

Zum Beispiel ist ein Papagei ein Objekt mit Attributen wie name, alter und farbe und Verhaltensweisen wie sing() und tanzen().

OOP in Python fördert wiederverwendbaren Code, entsprechend dem DRY-Prinzip (Don't Repeat Yourself).

Klasse

class ist ein Bauplan, der die Struktur und das Verhalten von Objekten definiert. Denken Sie an eine detaillierte Skizze eines Papageis: Sie spezifiziert, welche Eigenschaften und Aktionen ein Papagei haben kann.

class Papagei:
    pass

Hier ist Papagei eine leere Klasse. Instanzen dieser Klasse werden später erstellt.

Objekt

Ein Objekt (oder Instanz) ist eine konkrete Realisierung einer Klasse. Wenn eine Klasse definiert wird, wird kein Speicher allokiert; nur die Vorlage existiert. Das Instanziieren der Klasse erstellt das Objekt.

obj = Papagei()

Im folgenden Beispiel bauen wir eine funktionale Papagei-Klasse und erstellen zwei Instanzen, blu und woo:

class Papagei:
    # Klassenattribut
    art = "Vogel"
    # Instanzattribute
    def __init__(self, name, alter):
        self.name = name
        self.alter = alter
# Klasse instanziieren
blu = Papagei("Blu", 10)
woo = Papagei("Woo", 15)
# Klassenattribute zugreifen
print("Blu ist ein {}".format(blu.__class__.art))
print("Woo ist auch ein {}".format(woo.__class__.art))
# Instanzattribute zugreifen
print("{} ist {} Jahre alt".format(blu.name, blu.alter))
print("{} ist {} Jahre alt".format(woo.name, woo.alter))

Ausgabe

Blu ist ein Vogel Woo ist auch ein Vogel Blu ist 10 Jahre alt Woo ist 15 Jahre alt

In diesem Snippet ist art ein Klassenattribut, das von allen Papageien geteilt wird, während name und alter Instanzattribute sind, die für jedes Objekt einzigartig sind.

Methoden

Methoden sind Funktionen, die innerhalb einer Klasse definiert sind und das Objektverhalten beschreiben. Sie werden auf Instanzen der Klasse aufgerufen.

class Papagei:
    def __init__(self, name, alter):
        self.name = name
        self.alter = alter
    def sing(self, lied):
        return f"{self.name} singt {lied}"
    def tanzen(self):
        return f"{self.name} tanzt jetzt"
# Instanziieren und Methoden verwenden
blu = Papagei("Blu", 10)
print(blu.sing("'Happy'"))
print(blu.tanzen())

Ausgabe

Blu singt 'Happy' Blu tanzt jetzt

Vererbung

Vererbung ermöglicht es einer neuen Klasse, Attribute und Methoden von einer bestehenden Klasse zu erben, was Code-Wiederverwendung und logische Hierarchie fördert.

# Basisklasse
class Vogel:
    def __init__(self):
        print("Vogel ist bereit")
    def werIstDas(self):
        print("Vogel")
    def schwimmen(self):
        print("Schneller schwimmen")
# Abgeleitete Klasse
class Pinguin(Vogel):
    def __init__(self):
        super().__init__()
        print("Pinguin ist bereit")
    def werIstDas(self):
        print("Pinguin")
    def laufen(self):
        print("Schneller laufen")
peggy = Pinguin()
peggy.werIstDas()
peggy.schwimmen()
peggy.laufen()

Ausgabe

Vogel ist bereit Pinguin ist bereit Pinguin Schneller schwimmen Schneller laufen

Kapselung

Kapselung beschränkt den direkten Zugriff auf den internen Zustand eines Objekts und schützt die Datenintegrität. In Python werden private Attribute durch einen führenden Unterstrich (einfach oder doppelt) gekennzeichnet.

class Computer:
    def __init__(self):
        self.__maxpreis = 900
    def verkaufen(self):
        print(f"Verkaufspreis: {self.__maxpreis}")
    def setMaxPreis(self, preis):
        self.__maxpreis = preis
c = Computer()
c.verkaufen()
# Direkter Modifikationsversuch
c.__maxpreis = 1000
c.verkaufen()
# Setter-Methode verwenden
c.setMaxPreis(1000)
c.verkaufen()

Ausgabe

Verkaufspreis: 900 Verkaufspreis: 900 Verkaufspreis: 1000

Polymorphie

Polymorphie erlaubt es, Objekte verschiedener Klassen über eine gemeinsame Schnittstelle zu behandeln, was flexiblen Code ermöglicht, der auf verschiedenen Objekttypen operieren kann.

class Papagei:
    def fliegen(self):
        print("Papagei kann fliegen")
    def schwimmen(self):
        print("Papagei kann nicht schwimmen")
class Pinguin:
    def fliegen(self):
        print("Pinguin kann nicht fliegen")
    def schwimmen(self):
        print("Pinguin kann schwimmen")
# Gemeinsame Schnittstelle
def flug_test(vogel):
    vogel.fliegen()
blu = Papagei()
peggy = Pinguin()
flug_test(blu)
flug_test(peggy)

Ausgabe

Papagei kann fliegen Pinguin kann nicht fliegen

Wichtigste Erkenntnisse

  • OOP strukturiert Code für Klarheit und Wartbarkeit.
  • Klassen ermöglichen Code-Wiederverwendung durch Vererbung.
  • Kapselung schützt interne Daten.
  • Polymorphie bietet flexible Schnittstellen über Objekttypen hinweg.

Python

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. Python-Datentypen meistern: Praxisleitfaden
  3. Python-Operatoren meistern: Umfassender Leitfaden
  4. Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
  5. Python benutzerdefinierte Exceptions: Ein praktischer Leitfaden
  6. Python Vererbung meistern: Konzepte, Syntax und praktische Beispiele
  7. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  8. Automatisiertes vision-basiertes Objekttracking mit Raspberry Pi und OpenCV
  9. Java meistern: Objekte, Klassen und Kern-OOP-Konzepte verstehen
  10. Java Objekt-Serialisierung: Objekte persistieren und wiederherstellen