logo

Costruttore Python

Un costruttore è un tipo speciale di metodo (funzione) utilizzato per inizializzare i membri di istanza della classe.

In C++ o Java, il costruttore ha lo stesso nome della sua classe, ma lo tratta in modo diverso in Python. Viene utilizzato per creare un oggetto.

I costruttori possono essere di due tipi.

  1. Costruttore parametrizzato
  2. Costruttore non parametrizzato

La definizione del costruttore viene eseguita quando creiamo l'oggetto di questa classe. I costruttori verificano inoltre che vi siano risorse sufficienti affinché l'oggetto possa eseguire qualsiasi attività di avvio.

Creazione del costruttore in Python

In Python, il metodo the __Calore__() simula il costruttore della classe. Questo metodo viene chiamato quando viene istanziata la classe. Accetta il se stesso -parola chiave come primo argomento che consente di accedere agli attributi o al metodo della classe.

Possiamo passare qualsiasi numero di argomenti al momento della creazione dell'oggetto classe, a seconda del file __Calore__() definizione. Viene utilizzato principalmente per inizializzare gli attributi della classe. Ogni classe deve avere un costruttore, anche se si basa semplicemente sul costruttore predefinito.

Considera il seguente esempio per inizializzare il file Dipendente attributi di classe.

Esempio

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

Produzione:

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

Contare il numero di oggetti di una classe

Il costruttore viene chiamato automaticamente quando creiamo l'oggetto della classe. Considera il seguente esempio.

Esempio

 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) 

Produzione:

 The number of students: 3 

Costruttore non parametrizzato Python

Il costruttore non parametrizzato utilizza quando non vogliamo manipolare il valore oppure il costruttore che ha solo self come argomento. Considera il seguente esempio.

Esempio

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

Costruttore con parametri Python

Il costruttore con parametri ha più parametri insieme a se stesso . Considera il seguente esempio.

Esempio

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

Produzione:

 This is parametrized constructor Hello John 

Costruttore predefinito Python

Quando non includiamo il costruttore nella classe o dimentichiamo di dichiararlo, quello diventa il costruttore predefinito. Non esegue alcuna attività ma inizializza gli oggetti. Considera il seguente esempio.

Esempio

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

Produzione:

 101 Joseph 

Più di un costruttore in una singola classe

Diamo un'occhiata a un altro scenario, cosa succede se dichiariamo gli stessi due costruttori nella classe.

Esempio

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

Produzione:

 The Second Constructor 

Nel codice precedente, l'oggetto st chiamato il secondo costruttore mentre entrambi hanno la stessa configurazione. Il primo metodo non è accessibile da st oggetto. Internamente, l'oggetto della classe chiamerà sempre l'ultimo costruttore se la classe ha più costruttori.

Nota: l'overload del costruttore non è consentito in Python.

Funzioni di classe integrate in Python

Le funzioni integrate definite nella classe sono descritte nella tabella seguente.

SN Funzione Descrizione
1 getattr(oggetto,nome,predefinito) Viene utilizzato per accedere all'attributo dell'oggetto.
2 setattr(oggetto, nome,valore) Viene utilizzato per impostare un valore particolare sull'attributo specifico di un oggetto.
3 delattr(oggetto, nome) Viene utilizzato per eliminare un attributo specifico.
4 hasattr(oggetto, nome) Restituisce vero se l'oggetto contiene qualche attributo specifico.

Esempio

 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) 

Produzione:

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

Attributi di classe incorporati

Insieme agli altri attributi, una classe Python contiene anche alcuni attributi di classe incorporati che forniscono informazioni sulla classe.

Gli attributi della classe incorporata sono forniti nella tabella seguente.

SN Attributo Descrizione
1 __detto__ Fornisce il dizionario contenente le informazioni sullo spazio dei nomi della classe.
2 __doc__ Contiene una stringa che contiene la documentazione della classe
3 __nome__ Viene utilizzato per accedere al nome della classe.
4 __modulo__ Viene utilizzato per accedere al modulo in cui è definita questa classe.
5 __basi__ Contiene una tupla che include tutte le classi base.

Esempio

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

Produzione:

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