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.
- Costruttore parametrizzato
- 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__