logo

Python-Konstruktor

Ein Konstruktor ist eine spezielle Art von Methode (Funktion), die zum Initialisieren der Instanzmitglieder der Klasse verwendet wird.

In C++ oder Java hat der Konstruktor denselben Namen wie seine Klasse, in Python wird der Konstruktor jedoch anders behandelt. Es wird verwendet, um ein Objekt zu erstellen.

Es gibt zwei Arten von Konstruktoren.

  1. Parametrisierter Konstruktor
  2. Nicht parametrisierter Konstruktor

Die Konstruktordefinition wird ausgeführt, wenn wir das Objekt dieser Klasse erstellen. Konstrukteure überprüfen außerdem, ob genügend Ressourcen für das Objekt vorhanden sind, um jede Startaufgabe auszuführen.

Erstellen des Konstruktors in Python

In Python ist die Methode the __Hitze__() simuliert den Konstruktor der Klasse. Diese Methode wird aufgerufen, wenn die Klasse instanziiert wird. Es akzeptiert die selbst -keyword als erstes Argument, das den Zugriff auf die Attribute oder Methoden der Klasse ermöglicht.

Wir können zum Zeitpunkt der Erstellung des Klassenobjekts eine beliebige Anzahl von Argumenten übergeben, je nachdem __Hitze__() Definition. Es wird hauptsächlich zum Initialisieren der Klassenattribute verwendet. Jede Klasse muss einen Konstruktor haben, auch wenn sie einfach auf dem Standardkonstruktor basiert.

Betrachten Sie das folgende Beispiel, um das zu initialisieren Mitarbeiter Klassenattribute.

Beispiel

 class Employee: def __init__(self, name, id): self.id = id self.name = name def display(self): print('ID: %d 
Name: %s' % (self.id, self.name)) emp1 = Employee('John', 101) emp2 = Employee('David', 102) # accessing display() method to print employee 1 information emp1.display() # accessing display() method to print employee 2 information emp2.display() 

Ausgabe:

 ID: 101 Name: John ID: 102 Name: David 

Zählen der Anzahl der Objekte einer Klasse

Der Konstruktor wird automatisch aufgerufen, wenn wir das Objekt der Klasse erstellen. Betrachten Sie das folgende Beispiel.

Beispiel

 class Student: count = 0 def __init__(self): Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print('The number of students:',Student.count) 

Ausgabe:

 The number of students: 3 

Nicht parametrisierter Python-Konstruktor

Der nicht parametrisierte Konstruktor wird verwendet, wenn wir den Wert nicht manipulieren möchten oder den Konstruktor verwenden, der nur self als Argument hat. Betrachten Sie das folgende Beispiel.

Beispiel

 class Student: # Constructor - non parameterized def __init__(self): print('This is non parametrized constructor') def show(self,name): print('Hello',name) student = Student() student.show('John') 

Python-parametrisierter Konstruktor

Der parametrisierte Konstruktor verfügt über mehrere Parameter zusammen mit selbst . Betrachten Sie das folgende Beispiel.

Beispiel

 class Student: # Constructor - parameterized def __init__(self, name): print('This is parametrized constructor') self.name = name def show(self): print('Hello',self.name) student = Student('John') student.show() 

Ausgabe:

 This is parametrized constructor Hello John 

Python-Standardkonstruktor

Wenn wir den Konstruktor nicht in die Klasse aufnehmen oder vergessen, ihn zu deklarieren, wird er zum Standardkonstruktor. Es führt keine Aufgabe aus, sondern initialisiert die Objekte. Betrachten Sie das folgende Beispiel.

Beispiel

 class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display() 

Ausgabe:

 101 Joseph 

Mehr als ein Konstruktor in einer einzelnen Klasse

Schauen wir uns ein anderes Szenario an: Was passiert, wenn wir die beiden gleichen Konstruktoren in der Klasse deklarieren?

Beispiel

 class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student() 

Ausgabe:

 The Second Constructor 

Im obigen Code das Objekt st wird der zweite Konstruktor aufgerufen, wobei beide die gleiche Konfiguration haben. Auf die erste Methode kann nicht zugegriffen werden st Objekt. Intern ruft das Objekt der Klasse immer den letzten Konstruktor auf, wenn die Klasse mehrere Konstruktoren hat.

Hinweis: Das Überladen des Konstruktors ist in Python nicht zulässig.

In Python integrierte Klassenfunktionen

Die in der Klasse definierten integrierten Funktionen werden in der folgenden Tabelle beschrieben.

SN Funktion Beschreibung
1 getattr(obj,name,default) Es wird verwendet, um auf das Attribut des Objekts zuzugreifen.
2 setattr(obj, name,value) Es wird verwendet, um einem bestimmten Attribut eines Objekts einen bestimmten Wert zuzuweisen.
3 delattr(obj, name) Es wird verwendet, um ein bestimmtes Attribut zu löschen.
4 hasattr(obj, name) Es gibt „true“ zurück, wenn das Objekt ein bestimmtes Attribut enthält.

Beispiel

 class Student: def __init__(self, name, id, age): self.name = name self.id = id self.age = age # creates the object of the class Student s = Student('John', 101, 22) # prints the attribute name of the object s print(getattr(s, 'name')) # reset the value of attribute age to 23 setattr(s, 'age', 23) # prints the modified value of age print(getattr(s, 'age')) # prints true if the student contains the attribute with name id print(hasattr(s, 'id')) # deletes the attribute age delattr(s, 'age') # this will give an error since the attribute age has been deleted print(s.age) 

Ausgabe:

 John 23 True AttributeError: 'Student' object has no attribute 'age' 

Integrierte Klassenattribute

Neben den anderen Attributen enthält eine Python-Klasse auch einige integrierte Klassenattribute, die Informationen über die Klasse bereitstellen.

Die integrierten Klassenattribute sind in der folgenden Tabelle aufgeführt.

SN Attribut Beschreibung
1 __dict__ Es stellt das Wörterbuch bereit, das die Informationen zum Klassennamensraum enthält.
2 __doc__ Es enthält eine Zeichenfolge mit der Klassendokumentation
3 __Name__ Es wird verwendet, um auf den Klassennamen zuzugreifen.
4 __Modul__ Es wird verwendet, um auf das Modul zuzugreifen, in dem diese Klasse definiert ist.
5 __Basen__ Es enthält ein Tupel einschließlich aller Basisklassen.

Beispiel

 class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age def display_details(self): print('Name:%s, ID:%d, age:%d'%(self.name,self.id)) s = Student('John',101,22) print(s.__doc__) print(s.__dict__) print(s.__module__) 

Ausgabe:

 None {'name': 'John', 'id': 101, 'age': 22} __main__