logo

Python-constructeur

Een constructor is een speciaal type methode (functie) dat wordt gebruikt om de instantieleden van de klasse te initialiseren.

In C++ of Java heeft de constructor dezelfde naam als zijn klasse, maar in Python wordt de constructor anders behandeld. Het wordt gebruikt om een ​​object te maken.

Constructors kunnen uit twee typen bestaan.

  1. Geparametriseerde constructor
  2. Niet-geparametriseerde constructor

Constructordefinitie wordt uitgevoerd wanneer we het object van deze klasse maken. Constructeurs verifiëren ook of er voldoende bronnen zijn voor het object om elke opstarttaak uit te voeren.

De constructor maken in Python

In Python is de methode the __warmte__() simuleert de constructor van de klasse. Deze methode wordt aangeroepen wanneer de klasse wordt geïnstantieerd. Het accepteert de zelf -keyword als eerste argument dat toegang geeft tot de attributen of methode van de klasse.

We kunnen een willekeurig aantal argumenten doorgeven op het moment dat het klasseobject wordt gemaakt, afhankelijk van de __warmte__() definitie. Het wordt meestal gebruikt om de klassenattributen te initialiseren. Elke klasse moet een constructor hebben, zelfs als deze eenvoudigweg afhankelijk is van de standaardconstructor.

Beschouw het volgende voorbeeld om het Medewerker klasse attributen.

Voorbeeld

 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() 

Uitgang:

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

Het aantal objecten van een klasse tellen

De constructor wordt automatisch aangeroepen wanneer we het object van de klasse maken. Beschouw het volgende voorbeeld.

Voorbeeld

 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) 

Uitgang:

 The number of students: 3 

Niet-geparametriseerde Python-constructor

De niet-geparametriseerde constructor wordt gebruikt wanneer we de waarde of de constructor die alleen zichzelf als argument heeft, niet willen manipuleren. Beschouw het volgende voorbeeld.

Voorbeeld

 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-geparametriseerde constructor

De geparametriseerde constructor heeft meerdere parameters samen met de zelf . Beschouw het volgende voorbeeld.

Voorbeeld

 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() 

Uitgang:

 This is parametrized constructor Hello John 

Python-standaardconstructor

Als we de constructor niet in de klasse opnemen of vergeten deze te declareren, wordt dat de standaardconstructor. Het voert geen enkele taak uit, maar initialiseert de objecten. Beschouw het volgende voorbeeld.

Voorbeeld

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

Uitgang:

 101 Joseph 

Meer dan één constructeur in één klasse

Laten we eens naar een ander scenario kijken, wat er gebeurt als we twee dezelfde constructors in de klasse declareren.

Voorbeeld

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

Uitgang:

 The Second Constructor 

In de bovenstaande code is het object st wordt de tweede constructor genoemd, terwijl beide dezelfde configuratie hebben. De eerste methode is niet toegankelijk voor de st voorwerp. Intern zal het object van de klasse altijd de laatste constructor aanroepen als de klasse meerdere constructors heeft.

Opmerking: overbelasting van de constructor is niet toegestaan ​​in Python.

Ingebouwde klassefuncties in Python

De ingebouwde functies die in de klasse zijn gedefinieerd, worden in de volgende tabel beschreven.

SN Functie Beschrijving
1 getattr(obj,naam,standaard) Het wordt gebruikt om toegang te krijgen tot het attribuut van het object.
2 setattr(obj, naam,waarde) Het wordt gebruikt om een ​​bepaalde waarde in te stellen voor het specifieke attribuut van een object.
3 delattr(obj, naam) Het wordt gebruikt om een ​​specifiek attribuut te verwijderen.
4 hasattr(obj, naam) Het retourneert waar als het object een specifiek kenmerk bevat.

Voorbeeld

 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) 

Uitgang:

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

Ingebouwde klassekenmerken

Naast de andere attributen bevat een Python-klasse ook enkele ingebouwde klasse-attributen die informatie geven over de klasse.

De ingebouwde klasse-attributen worden gegeven in de onderstaande tabel.

SN Attribuut Beschrijving
1 __dict__ Het biedt het woordenboek met informatie over de klassenaamruimte.
2 __doc__ Het bevat een string met de klassedocumentatie
3 __naam__ Het wordt gebruikt om toegang te krijgen tot de klassenaam.
4 __module__ Het wordt gebruikt om toegang te krijgen tot de module waarin deze klasse is gedefinieerd.
5 __bases__ Het bevat een tuple inclusief alle basisklassen.

Voorbeeld

 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__) 

Uitgang:

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