logo

Konstruktor Python

Konstruktor je posebna vrsta metode (funkcije), ki se uporablja za inicializacijo članov instance razreda.

V C++ ali Javi ima konstruktor isto ime kot njegov razred, vendar v Pythonu konstruktor obravnava drugače. Uporablja se za ustvarjanje predmeta.

Konstruktorji so lahko dveh vrst.

  1. Parametriziran konstruktor
  2. Neparametrizirani konstruktor

Definicija konstruktorja se izvede, ko ustvarimo objekt tega razreda. Konstruktorji prav tako preverijo, ali je na voljo dovolj sredstev za izvedbo katere koli zagonske naloge.

Ustvarjanje konstruktorja v pythonu

V Pythonu je metoda the __toplota__() simulira konstruktorja razreda. Ta metoda se pokliče, ko je razred instanciran. Sprejema sebe -keyword kot prvi argument, ki omogoča dostop do atributov ali metode razreda.

V času ustvarjanja predmeta razreda lahko posredujemo poljubno število argumentov, odvisno od __toplota__() definicija. Večinoma se uporablja za inicializacijo atributov razreda. Vsak razred mora imeti konstruktor, tudi če se preprosto opira na privzeti konstruktor.

Razmislite o naslednjem primeru za inicializacijo Zaposleni atributi razreda.

Primer

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

Izhod:

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

Štetje števila objektov v razredu

Konstruktor se pokliče samodejno, ko ustvarimo objekt razreda. Razmislite o naslednjem primeru.

Primer

 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) 

Izhod:

 The number of students: 3 

Python neparametriziran konstruktor

Neparametrizirani konstruktor uporabljamo, ko ne želimo manipulirati z vrednostjo ali konstruktor, ki ima kot argument samo sebe. Razmislite o naslednjem primeru.

Primer

 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 parametriran konstruktor

Parametrizirani konstruktor ima več parametrov skupaj z sebe . Razmislite o naslednjem primeru.

Primer

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

Izhod:

 This is parametrized constructor Hello John 

Privzeti konstruktor Python

Ko konstruktorja ne vključimo v razred ali ga pozabimo deklarirati, potem to postane privzeti konstruktor. Ne izvaja nobene naloge, ampak inicializira objekte. Razmislite o naslednjem primeru.

Primer

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

Izhod:

 101 Joseph 

Več kot en konstruktor v enem razredu

Oglejmo si še en scenarij, kaj se zgodi, če v razredu deklariramo dva ista konstruktorja.

Primer

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

Izhod:

 The Second Constructor 

V zgornji kodi je predmet st imenovan drugi konstruktor, medtem ko imata oba enako konfiguracijo. Prva metoda ni dostopna z st predmet. Interno bo objekt razreda vedno poklical zadnjega konstruktorja, če ima razred več konstruktorjev.

Opomba: Preobremenitev konstruktorja v Pythonu ni dovoljena.

Funkcije razreda, vgrajene v Python

Vgrajene funkcije, definirane v razredu, so opisane v naslednji tabeli.

SN funkcija Opis
1 getattr(obj,ime,privzeto) Uporablja se za dostop do atributa predmeta.
2 setattr(obj, ime, vrednost) Uporablja se za nastavitev določene vrednosti specifičnemu atributu predmeta.
3 delattr(obj, ime) Uporablja se za brisanje določenega atributa.
4 hasattr(obj, ime) Vrne true, če predmet vsebuje določen atribut.

Primer

 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) 

Izhod:

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

Vgrajeni atributi razreda

Skupaj z drugimi atributi vsebuje razred Python tudi nekaj vgrajenih atributov razreda, ki zagotavljajo informacije o razredu.

Vgrajeni atributi razreda so podani v spodnji tabeli.

SN Atribut Opis
1 __dict__ Zagotavlja slovar, ki vsebuje informacije o imenskem prostoru razreda.
2 __doc__ Vsebuje niz, ki vsebuje dokumentacijo razreda
3 __ime__ Uporablja se za dostop do imena razreda.
4 __modul__ Uporablja se za dostop do modula, v katerem je definiran ta razred.
5 __baze__ Vsebuje tuple, ki vključuje vse osnovne razrede.

Primer

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

Izhod:

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