Inhaltsverzeichnis[Ausblenden][Zeigen]
Unter Entwicklern hat die objektorientierte Programmierung eine beträchtliche Anhängerschaft angezogen. Auch die beliebte Computersprache Python folgt dem objektorientierten Paradigma.
Es befasst sich mit der Definition von Objekten und Klassen in Python, die die Grundlage für OOPs-Prinzipien bilden. In diesem Tutorial zum Thema „Objektorientiertes Programmieren in Python“ lernen Sie, wie Sie Python-Klassen deklarieren, daraus Objekte erstellen und die vier OOPs-Techniken anwenden.
Also, das Wichtigste zuerst.
Was ist objektorientierte Programmierung?
Das Hauptaugenmerk der objektorientierten Programmierung (OOP) liegt auf der Erstellung von „Objekten“. Eine Sammlung von miteinander verbundenen Variablen und Funktionen bildet ein Objekt.
Diese Variablen werden häufig als Attribute des Objekts bezeichnet, und seine Verhaltensweisen werden häufig als seine Funktionen bezeichnet. Diese Elemente verleihen der Anwendung eine effektivere und verständlichere Struktur. Ein Auto ist ein Beispiel für einen Gegenstand.
Wenn das Auto ein Gegenstand wäre, würden seine Attribute Dinge wie Farbe, Modell, Preis, Marke usw. umfassen. Außerdem würde es beschleunigen, verlangsamen und Gänge wechseln.
Ein weiteres Beispiel: Wenn wir uns einen Hund als einen Gegenstand vorstellen, dann könnten einige seiner Merkmale Farbe, Rasse, Name, Gewicht usw. sein. Und er würde sich bewegen, bellen, spielen usw.
Weil sie reale Konzepte wie Objekte, Verbergen, Vererbung usw. in die Programmierung einbezieht, ist die objektorientierte Programmierung bekannt. Da es realen Umständen so ähnlich ist, wird die Visualisierung einfacher.
Objektorientierte Programmierkonzepte
Klassen und Objekte in Python
Wie alle anderen objektorientierten Sprachen können Sie mit Python Klassen zum Generieren von Objekten entwerfen. Die beliebtesten Datentypen in Python, darunter Zeichenfolgen, Listen, Wörterbücher und andere Objekte, sind integrierte Klassen.
Eine Klasse ist eine Gruppe verknüpfter Methoden und Instanzvariablen, die eine bestimmte Art von Objekt definieren. Eine Klasse kann als Modell oder Vorlage für ein Objekt angesehen werden. Die Variablen, aus denen eine Klasse besteht, werden als Attribute bezeichnet.
Ein Objekt ist ein Mitglied einer Klasse, die einen definierten Satz von Attributen hat. Aus diesem Grund können beliebig viele Objekte mit derselben Klasse erstellt werden.
Python-Klassen werden mit dem Wort class definiert, dem dann der Klassenname und ein Doppelpunkt folgen. Eine Illustration einer Papageienklasse könnte sein:
Hier deklarieren wir die leere Klasse Parrot mit dem Schlüsselwort class. Wir erstellen Instanzen von Klassen. Eine Instanz ist ein bestimmtes Objekt, das aus einer bestimmten Klasse erstellt wurde. 'pass' wird häufig als Platzhalter für Code verwendet, auf dessen Implementierung wir im Moment verzichten können. Wir können den Python-Code ausführen, ohne einen Fehler auszulösen, indem wir das Schlüsselwort „pass“ verwenden.
Eine Instanziierung einer Klasse führt zu einem Objekt (Instanz). Nur die Beschreibung des Objekts wird definiert, wenn eine Klasse erstellt wird. Folglich wird kein Speicher oder RAM zugewiesen.
Ein Beispiel für ein Parrot-Klassenobjekt ist:
Obj ist in diesem Fall ein Objekt der Parrot-Klasse.
Nehmen wir an, wir kennen Einzelheiten über Papageien. Wir werden nun demonstrieren, wie die Parrot-Klasse und ihre Objekte erstellt werden.
Spezielle Methode ( __init__ )
Eine Methode namens init definiert die Attribute, die jedes Parrot-Objekt haben muss (). Wenn ein neues Parrot-Objekt gebildet wird, erstellt die Funktion __init__ den Anfangszustand des Objekts, indem sie die Werte zuweist, die wir innerhalb der Eigenschaften des Objekts liefern.
Jede neue Instanz der Klasse wird also mit __init__() initialisiert. Obwohl __init__() beliebig viele Parameter akzeptieren kann, ist self immer der erste Parameter.
Das Selbstargument enthält einen Verweis auf die aktive Klasseninstanz. Der self-Parameter, der mit der Adresse des aktuellen Objekts einer Klasse verknüpft ist und uns Zugriff auf die Daten seiner (des Objekts) Variablen gibt, bedeutet dies.
Beispiel 1
Wir haben im obigen Code eine Klasse namens Parrot eingerichtet. Als nächstes werden Eigenschaften definiert. Die Merkmale einer Sache sind ihre Eigenschaften. In der __init__-Funktion der Klasse werden diese Eigenschaften angegeben.
Wenn ein Objekt gebildet wird, ist die Initialisierungsmethode diejenige, die anfänglich aufgerufen wird. Dann werden Instanzen der Parrot-Klasse erstellt. Blaze und Wonda sind in diesem Fall Verweise (Werte) auf unsere neuen Objekte. __class .species ermöglicht uns den Zugriff auf das Klassenattribut.
Jede Instanz einer Klasse hat die gleichen Eigenschaften. Auf die Instanzmerkmale kann auch über blaze.name und blaze.age zugegriffen werden. Alle Instanzen einer Klasse haben jedoch eindeutige Instanzattribute.
Beispiel 2
Methoden
Funktionen, die im Körper einer Klasse definiert sind, werden Methoden genannt. Sie werden verwendet, um festzulegen, wie sich ein Element verhalten wird.
Zwei Methoden, sing() und dance, sind in der oben erwähnten Anwendung () definiert. Da sie auf einem Instanzobjekt wie Flame aufgerufen werden, werden sie als Instanzmethoden bezeichnet.
Grundlagen des OOPS-Konzepts
Die vier Kernideen der objektorientierten Programmierung sind:
- Erbe
- Kapselung
- Polymorphie
- Abstraktion
Erbe
Menschen sagen Neugeborenen häufig, dass sie Gesichtsmerkmale haben, die denen ihrer Eltern ähneln, oder dass sie bestimmte Eigenschaften von ihren Eltern geerbt haben.
Möglicherweise haben Sie auch festgestellt, dass Sie einige Eigenschaften mit Ihren Eltern teilen. Die reale Situation ist auch der Erbschaft ziemlich ähnlich.
Allerdings werden in diesem Fall die Eigenschaften der „Elternklassen“ an die „Kindklassen“ weitergegeben. Diese Aspekte werden in diesem Zusammenhang als "Eigenschaften" und "Methoden" bezeichnet.
Eine Klasse kann ihre Methoden und Attribute von einer anderen Klasse ableiten, indem sie die als Vererbung bekannte Technik verwendet. Vererbung ist der Vorgang, bei dem eine untergeordnete Klasse die Eigenschaften einer übergeordneten Klasse erhält.
Beispiel:
Die Elternklasse Mensch wird im obigen Beispiel von der Kindklasse Junge geerbt. Da Boy von Human erbt, können wir auf alle seine Methoden und Attribute zugreifen, wenn wir eine Instanz der Boy-Klasse erstellen.
In der Boy-Klasse wurde auch eine Methode namens schoolName definiert. Das übergeordnete Klassenobjekt kann nicht auf die Methode schoolName zugreifen. Die Methode schoolName kann jedoch aufgerufen werden, indem ein untergeordnetes Klassenobjekt (Boy) erstellt wird.
Kapselung
Jeder Variablen im Programm globalen Zugriff zu gewähren, ist kein kluger Schachzug, wenn man mit Klassen arbeitet und vertrauliche Daten handhabt.
Ohne dem Programm vollständigen Zugriff auf eine dieser Variablen zu gewähren, stellt die Kapselung einen Mechanismus bereit, mit dem wir die erforderlichen Variablen erhalten.
Explizit für diesen Zweck definierte Methoden können verwendet werden, um Daten aus Variablen zu aktualisieren, zu bearbeiten oder zu löschen. Dieses Programmierverfahren hat die Vorteile einer verbesserten Sicherheit und Kontrolle über die Dateneingabe.
Sehen Sie in der folgenden Demonstration, wie schnell auf Variablen zugegriffen werden kann:
Polymorphie
Angenommen, Sie verwenden Ihr Telefon zum Durchsuchen der Instagram-Feeds. Als Sie den Drang verspürten, Musik zu hören, haben Sie auf Spotify zugegriffen und angefangen, Ihr Lieblingslied zu spielen.
Nach einiger Zeit haben Sie einen Anruf erhalten, also haben Sie alles, was Sie im Hintergrund getan haben, angehalten, um ihn anzunehmen. Ihr Freund hat angerufen und Sie gebeten, ihm die Telefonnummer einer bestimmten Person per SMS zu senden.
Also schickten Sie ihm die Telefonnummer per SMS und machten mit Ihren Aufgaben weiter. Hast du irgendetwas mitbekommen? Mit nur einem Gerät – Ihrem Mobiltelefon – können Sie durch Feeds surfen, Musik hören, Anrufe entgegennehmen und tätigen und Nachrichten senden.
Daher ist Polymorphismus damit vergleichbar. Poly bedeutet zahlreich und Morph bezeichnet verschiedene Formen. Daher bezieht sich Polymorphismus als Ganzes auf etwas mit verschiedenen Formen.
Oder „etwas“, das je nach Umstand eine Vielzahl von Verhaltensweisen zeigen kann. In OOPS beschreibt Polymorphismus Funktionen mit denselben Namen, aber unterschiedlichen Verhaltensweisen. Alternativ eine andere Funktionssignatur mit demselben Funktionsnamen (an die Funktion übergebene Parameter).
Beispiel:
Hier können wir die Variable animal verwenden, um mit ihren jeweiligen Instanzmethoden über die Objekte des Zebras und des Hasen zu iterieren. Als Ergebnis wird das Verhalten (color() & eats()) sowohl des Zebras als auch des Kaninchens hier durch eine einzige Variable namens animal dargestellt. Es hält sich daher an die Polymorphismusregeln.
Abstraktion
Sie verwenden höchstwahrscheinlich einen Laptop, ein Telefon oder ein Tablet, um diese Inhalte zu lesen. Während Sie es lesen, machen Sie sich vermutlich auch Notizen, unterstreichen wichtige Passagen und speichern vielleicht einige Informationen in Ihren persönlichen Akten.
Alles, was Sie sehen können, wenn Sie dies lesen, ist ein „Bildschirm“ mit den Daten, die Ihnen angezeigt werden. Sie sehen während der Eingabe nur die Tasten der Tastatur, sodass Sie sich keine Gedanken über interne Feinheiten machen müssen, z. B. wie das Drücken einer Taste dazu führen kann, dass dieses Wort auf dem Bildschirm erscheint.
Alternativ dazu, wie durch Drücken einer Schaltfläche auf Ihrem Bildschirm ein neuer Tab gestartet werden kann.
Daher ist alles, was wir in dieser Situation beobachten können, abstrakt. Wir können nur das Ergebnis sehen, das es erzeugt, und nicht die inneren Feinheiten (die uns tatsächlich wichtig sind).
Ähnlich wie hier offenbart die Abstraktion nur die Funktionen, die alles besitzt, während sie alle Implementierungen oder internen Details verbirgt.
Das Hauptziel der Abstraktion besteht darin, Hintergrundinformationen und jegliche irrelevante Datenimplementierung zu verbergen, sodass die Menschen nur das sehen, was sie sehen müssen. Es hilft bei der Verwaltung der Komplexität des Codes.
Beispiel:
Hier ist eine fahrzeugbezogene abstrakte Klasse vorhanden. Da sie von der abstrakten Klasse ABC erbt, ist sie abstrakt. Da abstrakte Methoden nicht definiert sind oder leer bleiben, hat die Klasse Vehicle eine abstrakte Methode namens no of wheels, die keine Definition hat.
Sie erwarten, dass die Klassen, die die abstrakten Klassen erben, die Implementierung der Methode liefern.
Vorteile von OOPS-Konzepten
- Durch die Kapselung wird eine hohe Sicherheit und Datenschutz erreicht.
- Flexibilität durch viele polymorphe Versionen derselben Klasse.
- Die hohe Codekomplexität wurde durch Abstraktion reduziert.
- Anstatt Hunderte von Codezeilen zu sichten, um ein einzelnes Problem zu lokalisieren, macht die Modularität der Programmierung das Debuggen einfach.
- Die Wiederverwendung von Code wird durch die Vererbung von Eigenschaften der übergeordneten Klasse durch eine untergeordnete Klasse verursacht.
- Eine effektive Problemlösung ist möglich, weil wir Klassen erstellen, die die notwendigen Aktionen für jedes Miniproblem ausführen. Das folgende Problem kann noch schneller gelöst werden, da wir diese Klassen wiederverwenden können.
Zusammenfassung
Abschließend haben wir etwas über OOPS-Ideen in Python gelernt, dem derzeit heißesten Programmierparadigma.
Nachdem Sie dies gelesen haben, müssen Sie erkannt haben, dass sich das OOPS-Paradigma vollständig mit der Idee von Klassen und Objekten befasst. und OOPS-Konzepte wie Kapselung, Polymorphie, Vererbung und Abstraktion.
Hinterlassen Sie uns einen Kommentar