logo

Constructor Python

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.

  1. Constructor parametrizat
  2. 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__