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.
- Parametrisierter Konstruktor
- 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__