logo

Python-konstruktör

En konstruktor är en speciell typ av metod (funktion) som används för att initiera instansmedlemmarna i klassen.

I C++ eller Java har konstruktorn samma namn som sin klass, men den behandlar konstruktören annorlunda i Python. Den används för att skapa ett objekt.

Konstruktörer kan vara av två typer.

  1. Parameteriserad konstruktör
  2. Icke-parametriserad konstruktör

Konstruktordefinitionen exekveras när vi skapar objektet för den här klassen. Konstruktörer verifierar också att det finns tillräckligt med resurser för att objektet ska kunna utföra en startuppgift.

Skapar konstruktorn i python

I Python, metoden __värme__() simulerar klassens konstruktor. Denna metod anropas när klassen instansieras. Den accepterar själv -keyword som ett första argument som tillåter åtkomst till klassens attribut eller metod.

Vi kan skicka valfritt antal argument vid tidpunkten för att skapa klassobjektet, beroende på __värme__() definition. Det används mest för att initiera klassattributen. Varje klass måste ha en konstruktor, även om den helt enkelt förlitar sig på standardkonstruktorn.

Betrakta följande exempel för att initiera Anställd klassattribut.

Exempel

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

Produktion:

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

Räkna antalet objekt i en klass

Konstruktorn anropas automatiskt när vi skapar objektet i klassen. Betrakta följande exempel.

Exempel

 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) 

Produktion:

 The number of students: 3 

Python icke-parameteriserad konstruktör

Den icke-parameteriserade konstruktorn använder när vi inte vill manipulera värdet eller konstruktorn som bara har jaget som argument. Betrakta följande exempel.

Exempel

 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 Parameterized Constructor

Den parameteriserade konstruktorn har flera parametrar tillsammans med själv . Betrakta följande exempel.

Exempel

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

Produktion:

 This is parametrized constructor Hello John 

Python Default Constructor

När vi inte inkluderar konstruktorn i klassen eller glömmer att deklarera den, blir det standardkonstruktorn. Den utför ingen uppgift utan initierar objekten. Betrakta följande exempel.

Exempel

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

Produktion:

 101 Joseph 

Mer än en konstruktör i singelklass

Låt oss ta en titt på ett annat scenario, vad händer om vi förklarar två samma konstruktörer i klassen.

Exempel

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

Produktion:

 The Second Constructor 

I ovanstående kod, objektet st kallas den andra konstruktören medan båda har samma konfiguration. Den första metoden är inte tillgänglig för st objekt. Internt anropar klassens objekt alltid den sista konstruktorn om klassen har flera konstruktorer.

Obs: Konstruktörsöverbelastning är inte tillåten i Python.

Python inbyggda klassfunktioner

De inbyggda funktionerna som definieras i klassen beskrivs i följande tabell.

SN Fungera Beskrivning
1 getattr(obj,namn,default) Den används för att komma åt objektets attribut.
2 setattr(objekt, namn, värde) Den används för att ställa in ett visst värde till det specifika attributet för ett objekt.
3 delattr(objekt, namn) Det används för att ta bort ett specifikt attribut.
4 hasattr(objekt, namn) Det returnerar sant om objektet innehåller något specifikt attribut.

Exempel

 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) 

Produktion:

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

Inbyggda klassattribut

Tillsammans med de andra attributen innehåller en Python-klass även några inbyggda klassattribut som ger information om klassen.

De inbyggda klassattributen anges i tabellen nedan.

SN Attribut Beskrivning
1 __dikt__ Den tillhandahåller ordboken som innehåller information om klassens namnutrymme.
2 __doc__ Den innehåller en sträng som har klassdokumentationen
3 __namn__ Den används för att komma åt klassnamnet.
4 __modul__ Den används för att komma åt modulen där denna klass är definierad.
5 __baser__ Den innehåller en tupel inklusive alla basklasser.

Exempel

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

Produktion:

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