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.
- Parameteriserad konstruktör
- 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__