logo

Python konstruktor

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.

  1. Parametrirani konstruktor
  2. 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__