logo

Python-OOPs-Konzepte

Objektorientierte Programmierung ist ein grundlegendes Konzept in Python, das Entwickler in die Lage versetzt, modulare, wartbare und skalierbare Anwendungen zu erstellen. Durch das Verständnis der zentralen OOP-Prinzipien – Klassen, Objekte, Vererbung, Kapselung, Polymorphismus und Abstraktion – können Programmierer das volle Potenzial der OOP-Funktionen von Python nutzen, um elegante und effiziente Lösungen für komplexe Probleme zu entwerfen.

Was ist objektorientierte Programmierung in Python?

In Python ist die objektorientierte Programmierung (OOPs) ein Programmierparadigma, das Objekte und Klassen in der Programmierung verwendet. Ziel ist es, reale Entitäten wie Vererbung, Polymorphismen, Kapselung usw. in die Programmierung zu implementieren. Das Hauptkonzept der objektorientierten Programmierung (OOPs) oder Oops-Konzepte in Python besteht darin, die Daten und Funktionen, die zusammenarbeiten, als eine Einheit zu binden, sodass kein anderer Teil des Codes auf diese Daten zugreifen kann.



OOPs-Konzepte in Python

  • Klasse in Python
  • Objekte in Python
  • Polymorphismus in Python
  • Kapselung in Python
  • Vererbung in Python
  • Datenabstraktion in Python
Python-OOPs

Python-OOPs-Konzepte

Python-Klasse

Eine Klasse ist eine Sammlung von Objekten. Eine Klasse enthält die Blaupausen oder den Prototyp, aus dem die Objekte erstellt werden. Es handelt sich um eine logische Einheit, die einige Attribute und Methoden enthält.

Um die Notwendigkeit der Erstellung einer Klasse zu verstehen, betrachten wir ein Beispiel: Nehmen wir an, Sie möchten die Anzahl der Hunde verfolgen, die möglicherweise unterschiedliche Attribute wie Rasse und Alter aufweisen. Wenn eine Liste verwendet wird, könnte das erste Element die Rasse des Hundes sein, während das zweite Element sein Alter darstellen könnte. Nehmen wir an, es gibt 100 verschiedene Hunde. Wie wollen Sie dann wissen, welches Element welches sein soll? Was wäre, wenn Sie diesen Hunden weitere Eigenschaften hinzufügen möchten? Hier mangelt es an Organisation und es ist genau der Bedarf an Unterricht.



Einige Punkte zur Python-Klasse:

  • Klassen werden nach dem Schlüsselwort „Klasse“ erstellt.
  • Attribute sind die Variablen, die zu einer Klasse gehören.
  • Attribute sind immer öffentlich und können mit dem Punktoperator (.) aufgerufen werden. Beispiel: Myclass.Myattribute

Syntax der Klassendefinition:

class ClassName: # Statement-1 . . . # Statement-N>

Erstellen einer leeren Klasse in Python

Im obigen Beispiel haben wir mit dem Schlüsselwort class eine Klasse namens Dog erstellt.



Python
# Python3 program to # demonstrate defining # a class class Dog: pass>

Python-Objekte

In der objektorientierten Programmierung in Python ist das Objekt eine Entität, der ein Zustand und ein Verhalten zugeordnet sind. Es kann sich um ein beliebiges reales Objekt wie eine Maus, eine Tastatur, einen Stuhl, einen Tisch, einen Stift usw. handeln. Ganzzahlen, Zeichenfolgen, Gleitkommazahlen, sogar Arrays und Wörterbücher sind alles Objekte. Genauer gesagt ist jede einzelne Ganzzahl oder jede einzelne Zeichenfolge ein Objekt. Die Zahl 12 ist ein Objekt, die Zeichenfolge Hello, world ist ein Objekt, eine Liste ist ein Objekt, das andere Objekte enthalten kann, und so weiter. Sie haben die ganze Zeit über Objekte verwendet und sind sich dessen möglicherweise nicht einmal bewusst.

Ein Objekt besteht aus:

  • Zustand: Es wird durch die Attribute eines Objekts dargestellt. Es spiegelt auch die Eigenschaften eines Objekts wider.
  • Verhalten: Es wird durch die Methoden eines Objekts dargestellt. Es spiegelt auch die Reaktion eines Objekts auf andere Objekte wider.
  • Identität: Es gibt einem Objekt einen eindeutigen Namen und ermöglicht einem Objekt die Interaktion mit anderen Objekten.

Um den Zustand, das Verhalten und die Identität zu verstehen, nehmen wir das Beispiel des Klassenhundes (siehe oben).

  • Als Identität kann der Name des Hundes angesehen werden.
  • Als Zustand oder Merkmale können Rasse, Alter oder Farbe des Hundes in Betracht gezogen werden.
  • Als Verhalten kann berücksichtigt werden, ob der Hund frisst oder schläft.

Ein Objekt erstellen

Dadurch wird ein Objekt mit dem Namen obj der oben definierten Klasse Dog erstellt. Bevor wir uns eingehend mit Objekten und Klassen befassen, wollen wir einige grundlegende Schlüsselwörter verstehen, die bei der Arbeit mit Objekten und Klassen verwendet werden.

Python3
obj = Dog()>

Das Python-Selbst

  1. Klassenmethoden müssen einen zusätzlichen ersten Parameter in der Methodendefinition haben. Wir geben für diesen Parameter keinen Wert an, wenn wir die Methode aufrufen, Python stellt ihn bereit
  2. Wenn wir eine Methode haben, die keine Argumente akzeptiert, müssen wir immer noch ein Argument haben.
  3. Dies ähnelt diesem Zeiger in C++ und dieser Referenz in Java.

Wenn wir eine Methode dieses Objekts als myobject.method(arg1, arg2) aufrufen, wird diese von Python automatisch in MyClass.method(myobject, arg1, arg2) konvertiert – das ist alles, worum es bei dem speziellen Selbst geht.

Notiz: Weitere Informationen finden Sie unter self in der Python-Klasse

Die Python-Methode __init__

Der __init__-Methode ähnelt Konstruktoren in C++ und Java. Es wird ausgeführt, sobald ein Objekt einer Klasse instanziiert wird. Die Methode ist nützlich, um jede beliebige Initialisierung Ihres Objekts durchzuführen. Lassen Sie uns nun eine Klasse definieren und einige Objekte mit der Methode self und __init__ erstellen.

Erstellen einer Klasse und eines Objekts mit Klassen- und Instanzattributen

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>

Ausgabe
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Erstellen von Klassen und Objekten mit Methoden

Hier wird die Dog-Klasse mit zwei Attributen definiert:

  • attr1 ist ein Klassenattribut, das auf den Wert festgelegt ist Säugetier . Klassenattribute werden von allen Instanzen der Klasse gemeinsam genutzt.
  • __init__ ist eine spezielle Methode (Konstruktor), die eine Instanz der Dog-Klasse initialisiert. Es benötigt zwei Parameter: self (bezieht sich auf die zu erstellende Instanz) und name (repräsentiert den Namen des Hundes). Der Namensparameter wird verwendet, um jeder Instanz von Dog ein Namensattribut zuzuweisen.
    Die Speak-Methode ist innerhalb der Dog-Klasse definiert. Diese Methode gibt eine Zeichenfolge aus, die den Namen der Hundeinstanz enthält.

Der Treibercode beginnt mit der Erstellung zweier Instanzen der Dog-Klasse: Rodger und Tommy. Die Methode __init__ wird für jede Instanz aufgerufen, um ihre Namensattribute mit den bereitgestellten Namen zu initialisieren. In beiden Fällen (Rodger.speak() und Tommy.speak()) wird die Speak-Methode aufgerufen, wodurch jeder Hund eine Anweisung mit seinem Namen ausgibt.

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>

Ausgabe
My name is Rodger My name is Tommy>

Notiz: Weitere Informationen finden Sie unter Python-Klassen und -Objekte

Python-Vererbung

In der objektorientierten Python-Programmierung ist Vererbung die Fähigkeit einer Klasse, die Eigenschaften einer anderen Klasse abzuleiten oder zu erben. Die Klasse, die Eigenschaften ableitet, wird als abgeleitete Klasse oder untergeordnete Klasse bezeichnet, und die Klasse, von der die Eigenschaften abgeleitet werden, wird als Basisklasse oder übergeordnete Klasse bezeichnet. Die Vorteile einer Vererbung sind:

Amrita Rao Schauspielerin
  • Es stellt reale Beziehungen gut dar.
  • Es sorgt für die Wiederverwendbarkeit eines Codes. Wir müssen nicht immer wieder denselben Code schreiben. Außerdem können wir einer Klasse weitere Funktionen hinzufügen, ohne sie zu ändern.
  • Es ist transitiver Natur, was bedeutet, dass, wenn Klasse B von einer anderen Klasse A erbt, alle Unterklassen von B automatisch von Klasse A erben würden.

Arten der Vererbung

  • Einzelvererbung : Durch die Vererbung auf einer Ebene kann eine abgeleitete Klasse Merkmale von einer ein übergeordneten Klasse erben.
  • Mehrstufige Vererbung: Durch die mehrstufige Vererbung kann eine abgeleitete Klasse Eigenschaften von einer unmittelbar übergeordneten Klasse erben, die wiederum Eigenschaften von ihrer übergeordneten Klasse erbt.
  • Hierarchische Vererbung: Durch die Vererbung auf hierarchischer Ebene können mehr als eine abgeleitete Klasse Eigenschaften von einer übergeordneten Klasse erben.
  • Mehrfachvererbung: Durch die mehrstufige Vererbung kann eine abgeleitete Klasse Eigenschaften von mehr als einer Basisklasse erben.

Vererbung in Python

Im obigen Artikel haben wir zwei Klassen erstellt, nämlich Person (übergeordnete Klasse) und Employee (untergeordnete Klasse). Die Employee-Klasse erbt von der Person-Klasse. Wir können die Methoden der Personenklasse über die Mitarbeiterklasse verwenden, wie in der Anzeigefunktion im obigen Code zu sehen ist. Eine untergeordnete Klasse kann auch das Verhalten der übergeordneten Klasse ändern, wie durch die Methode details() gesehen.

Python3
# Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>

Ausgabe
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Notiz: Weitere Informationen finden Sie in unserem Vererbung in Python Lernprogramm.

Python-Polymorphismus

In der objektorientierten Programmierung von Python bedeutet Polymorphismus einfach, dass es viele Formen gibt. Beispielsweise müssen wir feststellen, ob eine bestimmte Vogelart fliegt oder nicht. Mithilfe von Polymorphismus können wir dies mithilfe einer einzigen Funktion tun.

Polymorphismus in Python

Dieser Code demonstriert das Konzept der Python-Oops-Vererbung und des Methodenüberschreibens in Python-Klassen. Es zeigt, wie Unterklassen in ihrer übergeordneten Klasse definierte Methoden überschreiben können, um ein bestimmtes Verhalten bereitzustellen, während sie gleichzeitig andere Methoden von der übergeordneten Klasse erben.

Python3
class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>

Ausgabe
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>

Notiz: Weitere Informationen finden Sie in unserem Polymorphismus in Python Lernprogramm.

Python-Kapselung

In der objektorientierten Programmierung mit Python ist die Kapselung eines der Grundkonzepte der objektorientierten Programmierung (OOP). Es beschreibt die Idee, Daten zu verpacken, und die Methoden, die mit Daten in einer Einheit arbeiten. Dies schränkt den direkten Zugriff auf Variablen und Methoden ein und kann eine versehentliche Änderung von Daten verhindern. Um versehentliche Änderungen zu verhindern, kann die Variable eines Objekts nur durch die Methode eines Objekts geändert werden. Diese Arten von Variablen werden als private Variablen bezeichnet.

Eine Klasse ist ein Beispiel für Kapselung, da sie alle Daten kapselt, bei denen es sich um Mitgliedsfunktionen, Variablen usw. handelt.

Kapselung in Python

Im obigen Beispiel haben wir die c-Variable als privates Attribut erstellt. Wir können nicht einmal direkt auf dieses Attribut zugreifen und nicht einmal seinen Wert ändern.

Python3
# Python program to # demonstrate private members # '__' double underscore represents private attribute.  # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>

Ausgabe
techcodeview.com>

Notiz: Weitere Informationen finden Sie in unserem Kapselung in Python Lernprogramm.

Datenabstraktion

Es verbirgt unnötige Codedetails vor dem Benutzer. Auch wenn wir sensible Teile unserer Code-Implementierung nicht preisgeben wollen, kam die Datenabstraktion hierher.

Datenabstraktion in Python kann durch die Erstellung abstrakter Klassen erreicht werden.

Objektorientierte Programmierung in Python | Set 2 (Ausblenden von Daten und Drucken von Objekten)