Un constructor este un tip special de metodă (funcție) care este utilizat pentru a inițializa membrii instanței clasei.
În C++ sau Java, constructorul are același nume ca și clasa sa, dar tratează constructorul diferit în Python. Este folosit pentru a crea un obiect.
Constructorii pot fi de două tipuri.
- Constructor parametrizat
- Constructor neparametrizat
Definiția constructorului este executată atunci când creăm obiectul acestei clase. Constructorii verifică, de asemenea, că există suficiente resurse pentru ca obiectul să efectueze orice sarcină de pornire.
Crearea constructorului în python
În Python, metoda __căldură__() simulează constructorul clasei. Această metodă este apelată atunci când clasa este instanțiată. Acceptă de sine -cuvânt cheie ca prim argument care permite accesarea atributelor sau metodei clasei.
Putem transmite orice număr de argumente în momentul creării obiectului de clasă, în funcție de __căldură__() definiție. Este folosit mai ales pentru a inițializa atributele clasei. Fiecare clasă trebuie să aibă un constructor, chiar dacă se bazează pur și simplu pe constructorul implicit.
Luați în considerare următorul exemplu pentru a inițializa Angajat atribute de clasă.
Exemplu
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()
Ieșire:
ID: 101 Name: John ID: 102 Name: David
Numărarea numărului de obiecte dintr-o clasă
Constructorul este apelat automat când creăm obiectul clasei. Luați în considerare următorul exemplu.
Exemplu
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)
Ieșire:
The number of students: 3
Constructor neparametrizat Python
Constructorul neparametrizat folosește atunci când nu dorim să manipulăm valoarea sau constructorul care are doar self ca argument. Luați în considerare următorul exemplu.
Exemplu
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')
Constructor parametrizat Python
Constructorul parametrizat are mai mulți parametri împreună cu de sine . Luați în considerare următorul exemplu.
Exemplu
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()
Ieșire:
This is parametrized constructor Hello John
Constructor implicit Python
Când nu includem constructorul în clasă sau uităm să-l declarăm, atunci acesta devine constructorul implicit. Nu efectuează nicio sarcină, dar inițializează obiectele. Luați în considerare următorul exemplu.
Exemplu
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Ieșire:
101 Joseph
Mai mult de un constructor la o singură clasă
Să aruncăm o privire la un alt scenariu, ce se întâmplă dacă declarăm aceiași doi constructori în clasă.
Exemplu
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Ieșire:
The Second Constructor
În codul de mai sus, obiectul Sf numit al doilea constructor, în timp ce ambele au aceeași configurație. Prima metodă nu este accesibilă de către Sf obiect. Intern, obiectul clasei va apela întotdeauna ultimul constructor dacă clasa are mai mulți constructori.
Notă: supraîncărcarea constructorului nu este permisă în Python.
Funcții de clasă încorporate Python
Funcțiile încorporate definite în clasă sunt descrise în tabelul următor.
SN | Funcţie | Descriere |
---|---|---|
1 | getattr(obj,nume,implicit) | Este folosit pentru a accesa atributul obiectului. |
2 | setattr(obj, nume, valoare) | Este folosit pentru a seta o anumită valoare atributului specific al unui obiect. |
3 | delattr(obj, nume) | Este folosit pentru a șterge un anumit atribut. |
4 | hasattr(obj, nume) | Returnează adevărat dacă obiectul conține un anumit atribut. |
Exemplu
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)
Ieșire:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Atribute de clasă încorporate
Alături de celelalte atribute, o clasă Python conține și unele atribute de clasă încorporate care oferă informații despre clasă.
Atributele de clasă încorporate sunt date în tabelul de mai jos.
SN | Atribut | Descriere |
---|---|---|
1 | __dict__ | Oferă dicționarul care conține informații despre spațiul de nume de clasă. |
2 | __doc__ | Conține un șir care conține documentația clasei |
3 | __Nume__ | Este folosit pentru a accesa numele clasei. |
4 | __modul__ | Este folosit pentru a accesa modulul în care este definită această clasă. |
5 | __baze__ | Conține un tuplu care include toate clasele de bază. |
Exemplu
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__)
Ieșire:
None {'name': 'John', 'id': 101, 'age': 22} __main__