Python-Klassen und -Objekte - Objektorientierte Programmierung



Dieser Blog über 'Python Class' befasst sich mit den Grundlagen von Klassen-, Attribut- und verschiedenen OOPS-Konzepten wie Vererbung, Polymorphismus und Kapselung.

Nachdem Stack Overflow vorausgesagt hatte, dass Python bis 2019 andere Sprachen in Bezug auf aktive Entwickler übertreffen wird, ist die Nachfrage nach wächst nur.Python folgt dem objektorientierten Programmierparadigma. Es geht darum, Python-Klassen zu deklarieren, Objekte daraus zu erstellen und mit den Benutzern zu interagieren. In einer objektorientierten Sprache ist das Programm in eigenständige Objekte aufgeteilt, oder Sie können sagen, in mehrere Miniprogramme. Jedes Objekt repräsentiert einen anderen Teil der Anwendung, der untereinander kommunizieren kann.
In diesem Python-Klassenblog werden Sie jeden Aspekt von Klassen und Objekten in der folgenden Reihenfolge verstehen:

Lass uns anfangen.:-)





Was ist eine Python-Klasse?

Eine Klasse in Python ist die Blaupause, aus der bestimmte Objekte erstellt werden. Damit können Sie Ihre Software auf eine bestimmte Weise strukturieren. Hier kommt eine Frage wie? Mit Klassen können wir unsere Daten und Funktionen logisch so gruppieren, dass sie leicht wiederverwendet werden können und bei Bedarf darauf aufgebaut werden können. Betrachten Sie das folgende Bild.

ClassesAndObjects - Python-Klasse - EdurekaIm ersten Bild (A) handelt es sich um eine Blaupause eines Hauses, die als betrachtet werden kann Klasse . Mit der gleichen Blaupause können wir mehrere Häuser erstellen und diese können als betrachtet werden Objekte . Mithilfe einer Klasse können Sie Ihren Programmen Konsistenz hinzufügen, damit sie sauberer und effizienter verwendet werden können. Die Attribute sind Datenelemente (Klassenvariablen und Instanzvariablen) und Methoden, auf die über die Punktnotation zugegriffen wird.



  • Klassenvariable ist eine Variable, die von allen verschiedenen Objekten / Instanzen einer Klasse gemeinsam genutzt wird.
  • Instanzvariablen sind Variablen, die für jede Instanz eindeutig sind. Es wird innerhalb einer Methode definiert und gehört nur zur aktuellen Instanz einer Klasse.
  • Methoden werden auch als Funktionen bezeichnet, die in einer Klasse definiert sind und das Verhalten eines Objekts beschreiben.

Lassen Sie uns nun weitermachen und sehen, wie es in PyCharm funktioniert. Schauen Sie sich zunächst die Syntax einer Python-Klasse an.

Syntax ::

Klasse Klassenname: Anweisung-1. . Aussage-N

Hier die ' Klasse' Anweisung erstellt eine neue Klassendefinition. Der Name der Klasse folgt unmittelbar auf das Schlüsselwort „ Klasse' in Python, gefolgt von einem Doppelpunkt. Betrachten Sie das folgende Beispiel, um eine Klasse in Python zu erstellen:



Klassenangestellter: pass #no Attribute und Methoden emp_1 = employee () emp_2 = employee () #Instanzvariable kann manuell erstellt emp_1.first = 'aayushi' emp_1.last = 'Johari' emp_1.email='aayushi@edureka.co 'emp_1.pay = 10000 emp_2.first =' test 'emp_2.last =' abc 'emp_2.email='test@company.com' emp_2.pay = 10000 print (emp_1.email) print (emp_2.email)

Ausgabe - -

aayushi@edureka.co test@company.com

Was ist nun, wenn wir diese Variablen nicht manuell festlegen möchten? Sie werden viel Code sehen und es ist auch fehleranfällig. Um es automatisch zu machen, können wir die 'init' -Methode verwenden. Lassen Sie uns dazu verstehen, was genau Methoden und Attribute in einer Python-Klasse sind.

Methoden und Attribute in einer Python-Klasse

Das Erstellen einer Klasse ist jetzt ohne einige Funktionen unvollständig. So können Funktionen definiert werden, indem verschiedene Attribute festgelegt werden, die als Container für Daten und Funktionen dienen, die sich auf diese Attribute beziehen. Funktionen in Python werden auch als bezeichnet Methoden . Apropos drin Methode ist es eine spezielle Funktion, die aufgerufen wird, wenn ein neues Objekt dieser Klasse instanziiert wird. Sie können sich das als Initialisierungsmethode vorstellen oder dies als Konstruktoren betrachten, wenn Sie aus einem anderen objektorientierten Programmierhintergrund wie C ++, Java usw. stammen. Wenn wir nun eine Methode innerhalb einer Klasse festlegen, erhalten sie automatisch eine Instanz. Lassen Sie uns mit der Python-Klasse fortfahren und den Vornamen, Nachnamen und das Gehalt mit dieser Methode akzeptieren.

Klassenangestellter: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' emp_1 = Mitarbeiter ('aayushi', 'johari', 350000) emp_2 = Mitarbeiter ('test', 'test', 100000) print (emp_1.email) print (emp_2.email)

Jetzt haben wir innerhalb unserer 'init' -Methode diese Instanzvariablen festgelegt (self, first, last, sal). Self ist die Instanz, dh wenn wir self.fname = first schreiben, ist es dasselbe wie emp_1.first = ’aayushi’. Dann haben wir Instanzen der Mitarbeiterklasse erstellt, in denen wir die in der init-Methode angegebenen Werte übergeben können. Diese Methode verwendet die Instanzen als Argumente. Anstatt es manuell zu machen, wird es gemacht automatisch jetzt.

Wie benutzt man Microsoft Visual Studio?

Als nächstes wollen wir die Fähigkeit, irgendeine Art von Aktion auszuführen. Dafür werden wir ein hinzufügen Methode zu dieser Klasse. Angenommen, die Funktionalität soll den vollständigen Namen des Mitarbeiters anzeigen. Lassen Sie uns dies also praktisch umsetzen.

Klassenangestellter: def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) emp_1 = mitarbeiter ('aayushi', 'johari', 350000) emp_2 = mitarbeiter ('test', 'test', 100000) print (emp_1.email) print (emp_2.email) print (emp_1.fullname ()) print (emp_2.fullname ())

Ausgabe- -

aayushi.johari@company.com test.test@company.com aayushijohari testtest

Wie Sie oben sehen können, habe ich innerhalb einer Klasse eine Methode namens 'vollständiger Name' erstellt. Daher verwendet jede Methode in einer Python-Klasse automatisch die Instanz als erstes Argument. Jetzt habe ich innerhalb dieser Methode die Logik geschrieben, den vollständigen Namen zu drucken und diesen anstelle des Vor- und Nachnamens von emp_1 zurückzugeben. Als nächstes habe ich 'self' verwendet, damit es mit allen Instanzen funktioniert. Um dies jedes Mal zu drucken, verwenden wir a Methode .

In Python-Klassen gibt es Variablen, die von allen Instanzen einer Klasse gemeinsam genutzt werden. Diese werden als bezeichnet Klassenvariablen . Instanzvariablen können für jede Instanz eindeutig sein, z. B. Namen, E-Mail, Sal usw. Kompliziert? Lassen Sie uns dies anhand eines Beispiels verstehen. Beziehen Sie sich auf den folgenden Code, um die jährliche Gehaltserhöhung herauszufinden.

Klassenangestellter: perc_raise = 1.05 def __init __ (self, first, last, sal): self.fname = first self.lname = last self.sal = sal self.email = first + '.' + last + '@ company.com' def fullname (self): return '{} {}'. format (self.fname, self.lname) def apply_raise (self): self.sal = int (self.sal * 1.05 ) emp_1 = Mitarbeiter ('aayushi', 'johari', 350000) emp_2 = Mitarbeiter ('test', 'test', 100000) print (emp_1.sal) emp_1.apply_raise () print (emp_1.sal)

Ausgabe- -

350000 367500

Wie Sie oben sehen können, habe ich zuerst das Gehalt gedruckt und dann die Erhöhung um 1,5% angewendet. Um auf diese Klassenvariablen zugreifen zu können, müssen wir entweder über die Klasse oder eine Instanz der Klasse auf sie zugreifen. Lassen Sie uns nun die verschiedenen Attribute in einer Python-Klasse verstehen.

Attribute in einer Python-Klasse

Attribute in Python definieren eine Eigenschaft eines Objekts, Elements oder einer Datei. Es gibt zwei Arten von Attributen:

  • Integrierte Klassenattribute: In Python-Klassen sind verschiedene integrierte Attribute vorhanden. Zum Beispiel _dict_, _doc_, _name _ usw. Lassen Sie mich dasselbe Beispiel nehmen, in dem ich alle Schlüssel-Wert-Paare von employee1 anzeigen möchte. Dazu können Sie einfach die folgende Anweisung schreiben, die den Klassennamensraum enthält:

    print (emp_1 .__ dict__)

    Nach der Ausführung erhalten Sie folgende Ausgaben: {'fname': 'aayushi', 'lname': 'johari', 'sal': 350000, 'email': 'aayushi.johari@company.com'}

  • Von Benutzern definierte Attribute : Attribute werden innerhalb der Klassendefinition erstellt. Wir können dynamisch neue Attribute für vorhandene Instanzen einer Klasse erstellen. Attribute können auch an Klassennamen gebunden werden.

Als nächstes haben wir öffentlich, geschützt und Privat Attribute. Lassen Sie uns sie im Detail verstehen:

Benennung Art Bedeutung
NameÖffentlichkeitDiese Attribute können innerhalb oder außerhalb einer Klassendefinition frei verwendet werden
_NameGeschütztGeschützte Attribute sollten nicht außerhalb der Klassendefinition verwendet werden, es sei denn, sie befinden sich innerhalb einer Unterklassendefinition
__NamePrivatDiese Art von Attribut ist nicht zugänglich und unsichtbar. Es ist weder möglich, diese Attribute zu lesen noch zu schreiben, außer innerhalb der Klassendefinition


Als nächstes wollen wir die wichtigste Komponente in einer Python-Klasse verstehen, d. H. Objekte.

Was sind Objekte in einer Python-Klasse?

Wie oben erläutert, kann ein Objekt verwendet werden, um auf verschiedene Attribute zuzugreifen. Es wird verwendet, um eine Instanz der Klasse zu erstellen. Eine Instanz ist ein Objekt einer Klasse, die zur Laufzeit erstellt wurde.

T.Um Ihnen einen schnellen Überblick zu geben, ist ein Objekt im Grunde alles, was Sie sehen. Zum Beispiel: Ein Hund ist ein Objekt der Tierklasse, ich bin ein Objekt der menschlichen Klasse. Ebenso kann es verschiedene Objekte für dieselbe Telefonklasse geben.Dies ist einem Funktionsaufruf ziemlich ähnlich, den wir bereits besprochen haben. Lassen Sie uns dies anhand eines Beispiels verstehen:

Klasse MyClass: def func (self): print ('Hallo') # Erstelle eine neue MyClass ob = MyClass () ob.func ()

Lassen Sie uns die verschiedenen OOPs-Konzepte verstehen, um mit der Python-Klasse fortzufahren.

OOPs-Konzepte

OOPs beziehen sich auf die objektorientierte Programmierung in Python. Nun, Python ist nicht vollständig objektorientiert, da es einige prozedurale Funktionen enthält. Nun müssen Sie sich fragen, was der Unterschied zwischen einer prozeduralen und einer objektorientierten Programmierung ist. Um Ihre Zweifel auszuräumen, wird bei einer prozeduralen Programmierung der gesamte Code in eine lange Prozedur geschrieben, obwohl er möglicherweise Funktionen und Unterprogramme enthält. Es ist nicht verwaltbar, da sowohl Daten als auch Logik miteinander vermischt werden. Wenn wir jedoch über objektorientierte Programmierung sprechen, wird das Programm in eigenständige Objekte oder mehrere Miniprogramme aufgeteilt. Jedes Objekt repräsentiert einen anderen Teil der Anwendung, der über eigene Daten und Logik verfügt, um untereinander zu kommunizieren. Beispielsweise enthält eine Website verschiedene Objekte wie Bilder, Videos usw.
Die objektorientierte Programmierung umfasst das Konzept der Python-Klasse, des Objekts, der Vererbung, des Polymorphismus, der Abstraktion usw. Lassen Sie uns diese Themen im Detail verstehen.

Python-Klasse: Vererbung

Durch Vererbung können wir Attribute und Methoden von der Basis- / Elternklasse erben. Dies ist nützlich, da wir Unterklassen erstellen und alle Funktionen unserer übergeordneten Klasse abrufen können. Dann können wir neue Funktionen überschreiben und hinzufügen, ohne die übergeordnete Klasse zu beeinflussen. Lassen Sie uns das Konzept der Eltern- und Kinderklasse anhand eines Beispiels verstehen.

Wie wir auf dem Bild sehen können, erbt ein Kind die Eigenschaften vom Vater. In ähnlicher Weise gibt es in Python zwei Klassen:

1. Elternklasse (Super- oder Basisklasse)

2. Untergeordnete Klasse (Unterklasse oder abgeleitete Klasse)

Wie erstelle ich ein dynamisches Array in Java?

Eine Klasse, die die Eigenschaften erbt, ist bekannt als Kind Klasse, während eine Klasse, deren Eigenschaften vererbt werden, als bekannt ist Elternteil Klasse.

Vererbung bezieht sich auf die Fähigkeit zu erstellen Unterklassen die Spezialisierungen ihrer Eltern enthalten. Es ist weiter in vier Typen unterteilt, nämlich Einzel-, Mehrebenen-, hierarchische und Mehrfachvererbungen. Sehen Sie sich das folgende Bild an, um ein besseres Verständnis zu erhalten.

Lassen Sie uns mit der Python-Klasse fortfahren und verstehen, wie nützlich Vererbung ist.

Angenommen, ich möchte Klassen für die Arten von Mitarbeitern erstellen. Ich werde 'Entwickler' und 'Manager' als Unterklassen erstellen, da sowohl Entwickler als auch Manager einen Namen, eine E-Mail-Adresse und ein Gehalt haben und alle diese Funktionen in der Mitarbeiterklasse vorhanden sind. Anstatt den Code für die Unterklassen zu kopieren, können wir den Code einfach wiederverwenden, indem wir vom Mitarbeiter erben.

Klassenangestellter: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) Klassenentwickler (Mitarbeiter): pass emp_1 = Entwickler ('aayushi', 'johari', 1000000) print (emp_1.email)
 Ausgabe - aayushi.johari@company.com

Wie Sie in der obigen Ausgabe sehen können, sind alle Details der Mitarbeiterklasse in der Entwicklerklasse verfügbar.Was ist nun, wenn ich den Raise_amount für einen Entwickler auf 10% ändern möchte? Mal sehen, wie es praktisch geht.

Klassenangestellter: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) Klassenentwickler (Mitarbeiter): raise_amount = 1.10 emp_1 = Entwickler ('aayushi', 'johari', 1000000) print (emp_1.raise_amount)
 Ausgabe - 1.1

Wie Sie sehen, wurde die prozentuale Gehaltserhöhung von 4% auf 10% aktualisiert.Wenn ich nun ein weiteres Attribut hinzufügen möchte, sagen Sie eine Programmiersprache in unserer init-Methode, die jedoch in unserer übergeordneten Klasse nicht vorhanden ist. Gibt es dafür eine Lösung? Ja! Wir können die gesamte Mitarbeiterlogik kopieren und dies tun, aber dadurch wird die Codegröße erneut erhöht. Um dies zu vermeiden, betrachten wir den folgenden Code:

Klassenangestellter: num_employee = 0 raise_amount = 1.04 def __init __ (self, first, last, sal): self.first = first self.last = last self.sal = sal self.email = first + '.' + last + '@ company.com' employee.num_employee + = 1 def fullname (self): return '{} {}'. format (self.first, self.last) def apply_raise (self): self.sal = int ( self.sal * raise_amount) Klassenentwickler (Mitarbeiter): raise_amount = 1.10 def __init __ (self, first, last, sal, prog_lang): super () .__ init __ (first, last, sal) self.prog_lang = prog_lang emp_1 = developer ( 'aayushi', 'johari', 1000000, 'python') print (emp_1.prog_lang)

Daher habe ich mit nur ein wenig Code Änderungen vorgenommen. Ich habe super .__ init __ (first, last, pay) verwendet, das die Eigenschaften von der Basisklasse erbt.Abschließend wird die Vererbung verwendet, um den Code wiederzuverwenden und die Komplexität eines Programms zu verringern.

Python-Klasse: Polymorphismus

Polymorphismus in der Informatik ist die Fähigkeit, dieselbe Schnittstelle für unterschiedliche zugrunde liegende Formen darzustellen. In der Praxis bedeutet Polymorphismus, dass Klasse B, wenn sie von Klasse A erbt, nicht alles über Klasse A erben muss, sondern einige der Dinge tun kann, die Klasse A anders macht. Es wird am häufigsten beim Umgang mit Vererbung verwendet. Python ist implizit polymorph und kann Standardoperatoren überladen, sodass sie sich entsprechend ihrem Kontext entsprechend verhalten.

Lassen Sie uns anhand eines Beispiels verstehen:

Klasse Tier: def __init __ (Selbst, Name): Selbst.name = Name def Talk (Selbst): Klasse übergeben Hund (Tier): Def Talk (Selbst): Druck ('Woof') Klasse Katze (Tier): Def Talk ( Selbst): print ('MEOW!') c = Katze ('Kätzchen') c.talk () d = Hund (Tier) d.talk ()

Ausgabe -

Miau! Schuss

So legen Sie den Klassenpfad in Windows fest

Als nächstes gehen wir zu einem anderen objektorientierten Programmierkonzept über, nämlich der Abstraktion.

Python-Klasse: Abstraktion

Abstraktion wird verwendet, um die komplexe Realität zu vereinfachen, indem für das Problem geeignete Klassen modelliert werden. Hier haben wir eine abstrakte Klasse, die nicht instanziiert werden kann. Dies bedeutet, dass Sie für diese Klassen keine Objekte oder Instanzen erstellen können. Es kann nur zum Erben bestimmter Funktionen verwendet werden, die Sie als Basisklasse aufrufen. Sie können also Funktionen erben, aber gleichzeitig keine Instanz dieser bestimmten Klasse erstellen. Lassen Sie uns das Konzept der abstrakten Klasse anhand eines folgenden Beispiels verstehen:

von abc import ABC, abstractmethod class Mitarbeiter (ABC): @abstractmethod def berechne_Gehalt (self, sal): pass class Entwickler (Mitarbeiter): def berechne_salary (self, sal): finalalary = sal * 1.10 return finalalary emp_1 = Developer () print (emp_1.calculate_salary (10000))

Ausgabe- -

11000.0

Wie Sie in der obigen Ausgabe sehen können, haben wir das Grundgehalt auf 10% erhöht, dh das Gehalt beträgt jetzt 11000. Wenn Sie nun tatsächlich ein Objekt der Klasse 'Mitarbeiter' erstellen, wird ein Fehler ausgegeben, wie dies bei Python nicht der Fall ist Sie können kein Objekt einer abstrakten Klasse erstellen. Mit der Vererbung können Sie jedoch die Eigenschaften tatsächlich erben und die entsprechenden Aufgaben ausführen.

Also Leute, hier ging es um Python-Klassen und Objekte auf den Punkt gebracht. Wir haben alle Grundlagen der Python-Klasse, Objekte und verschiedene objektorientierte Konzepte in Python behandelt, sodass Sie jetzt mit dem Üben beginnen können. Ich hoffe, euch hat das Lesen dieses Blogs auf „Python Class“ gefallen und ihr seid klar über jeden Aspekt, den ich oben besprochen habe. Nach dem Python-Unterricht werde ich weitere Blogs über Python für Scikit Learn Library und Array erstellen. Bleiben Sie dran!

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses 'Python Class' -Blogs und wir werden uns so schnell wie möglich bei Ihnen melden.

Sie können sich eingehend mit Python und seinen verschiedenen Anwendungen vertraut machen mit unserem Live-Online-Training mit 24/7 Support und lebenslangem Zugriff.