Konstruktor je posebna vrsta metode (funkcije) koja se koristi za inicijalizaciju članova instance klase.
U C++ ili Javi, konstruktor ima isto ime kao i njegova klasa, ali drugačije tretira konstruktor u Pythonu. Koristi se za stvaranje objekta.
Konstruktori mogu biti dvije vrste.
- Parametrirani konstruktor
- Neparametrizirani konstruktor
Definicija konstruktora se izvršava kada kreiramo objekt ove klase. Konstruktori također provjeravaju ima li dovoljno resursa da objekt izvrši bilo koji zadatak pokretanja.
Izrada konstruktora u pythonu
U Pythonu, metoda the __toplina__() simulira konstruktor klase. Ova metoda se poziva kada se klasa instancira. Prihvaća sebe -ključna riječ kao prvi argument koji omogućuje pristup atributima ili metodi klase.
Možemo proslijediti bilo koji broj argumenata u vrijeme stvaranja objekta klase, ovisno o __toplina__() definicija. Uglavnom se koristi za inicijalizaciju atributa klase. Svaka klasa mora imati konstruktor, čak i ako se jednostavno oslanja na zadani konstruktor.
Razmotrite sljedeći primjer za inicijalizaciju Zaposlenik atributi klase.
Primjer
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()
Izlaz:
ID: 101 Name: John ID: 102 Name: David
Brojanje broja objekata klase
Konstruktor se poziva automatski kada kreiramo objekt klase. Razmotrite sljedeći primjer.
Primjer
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)
Izlaz:
The number of students: 3
Python neparametrizirani konstruktor
Neparametrizirani konstruktor koristi se kada ne želimo manipulirati vrijednošću ili konstruktor koji ima samo sebe kao argument. Razmotrite sljedeći primjer.
Primjer
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 parametrizirani konstruktor
Parametrizirani konstruktor ima više parametara zajedno s sebe . Razmotrite sljedeći primjer.
Primjer
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()
Izlaz:
This is parametrized constructor Hello John
Python zadani konstruktor
Kada ne uključimo konstruktor u klasu ili ga zaboravimo deklarirati, tada on postaje zadani konstruktor. Ne obavlja nikakav zadatak, ali inicijalizira objekte. Razmotrite sljedeći primjer.
Primjer
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Izlaz:
101 Joseph
Više od jednog konstruktora u jednoj klasi
Pogledajmo drugi scenarij, što se događa ako deklariramo dva ista konstruktora u klasi.
Primjer
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Izlaz:
The Second Constructor
U gornjem kodu, objekt sv naziva se drugi konstruktor dok oba imaju istu konfiguraciju. Prva metoda nije dostupna od strane sv objekt. Interno, objekt klase uvijek će pozvati posljednjeg konstruktora ako klasa ima više konstruktora.
Napomena: Preopterećenje konstruktora nije dopušteno u Pythonu.
Funkcije klase ugrađene u Python
Ugrađene funkcije definirane u klasi opisane su u sljedećoj tablici.
S N | Funkcija | Opis |
---|---|---|
1 | getattr(obj,ime,zadano) | Koristi se za pristup atributu objekta. |
2 | setattr(obj, ime,vrijednost) | Koristi se za postavljanje određene vrijednosti određenog atributa objekta. |
3 | delattr(obj, ime) | Koristi se za brisanje određenog atributa. |
4 | hasattr(obj, ime) | Vraća true ako objekt sadrži neki specifičan atribut. |
Primjer
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)
Izlaz:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Ugrađeni atributi klase
Uz ostale atribute, Python klasa također sadrži neke ugrađene atribute klase koji pružaju informacije o klasi.
Ugrađeni atributi klase dati su u donjoj tablici.
S N | Atribut | Opis |
---|---|---|
1 | __dikt__ | Pruža rječnik koji sadrži informacije o prostoru imena klase. |
2 | __doc__ | Sadrži niz koji ima dokumentaciju klase |
3 | __Ime__ | Koristi se za pristup nazivu klase. |
4 | __modul__ | Koristi se za pristup modulu u kojem je definirana ova klasa. |
5 | __baze__ | Sadrži torku koja uključuje sve osnovne klase. |
Primjer
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__)
Izlaz:
None {'name': 'John', 'id': 101, 'age': 22} __main__