logo

Python Constructor

Konštruktor je špeciálny typ metódy (funkcie), ktorá sa používa na inicializáciu členov inštancie triedy.

V C++ alebo Java má konštruktor rovnaký názov ako jeho trieda, ale v Pythone zaobchádza s konštruktorom inak. Používa sa na vytvorenie objektu.

Konštruktory môžu byť dvoch typov.

  1. Parametrizovaný konštruktor
  2. Neparametrizovaný konštruktor

Definícia konštruktora sa vykoná, keď vytvoríme objekt tejto triedy. Konštruktéri tiež overujú, či existuje dostatok zdrojov na to, aby objekt mohol vykonať akúkoľvek úlohu spustenia.

Vytvorenie konštruktora v pythone

V Pythone je metóda the __heat__() simuluje konštruktor triedy. Táto metóda sa volá, keď sa vytvorí inštancia triedy. Prijíma sa seba -keyword ako prvý argument, ktorý umožňuje prístup k atribútom alebo metóde triedy.

V čase vytvárania objektu triedy môžeme odovzdať ľubovoľný počet argumentov v závislosti od __heat__() definícia. Väčšinou sa používa na inicializáciu atribútov triedy. Každá trieda musí mať konštruktor, aj keď sa jednoducho spolieha na predvolený konštruktor.

Zvážte nasledujúci príklad na inicializáciu zamestnanec atribúty triedy.

Príklad

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

Výkon:

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

Počítanie počtu objektov triedy

Konštruktor sa volá automaticky, keď vytvoríme objekt triedy. Zvážte nasledujúci príklad.

Príklad

 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) 

Výkon:

 The number of students: 3 

Neparametrizovaný konštruktor Pythonu

Neparametrizovaný konštruktor sa používa, keď nechceme manipulovať s hodnotou alebo konštruktorom, ktorý má ako argument iba ja. Zvážte nasledujúci príklad.

Príklad

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

Parametrizovaný konštruktor Pythonu

Parametrizovaný konštruktor má viacero parametrov spolu s seba . Zvážte nasledujúci príklad.

Príklad

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

Výkon:

 This is parametrized constructor Hello John 

Predvolený konštruktor Pythonu

Keď nezahrnieme konštruktor do triedy alebo ho zabudneme deklarovať, stane sa predvoleným konštruktorom. Nevykonáva žiadnu úlohu, ale inicializuje objekty. Zvážte nasledujúci príklad.

Príklad

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

Výkon:

 101 Joseph 

Viac ako jeden konštruktér v jednej triede

Pozrime sa na ďalší scenár, čo sa stane, ak deklarujeme dva rovnaké konštruktory v triede.

Príklad

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

Výkon:

 The Second Constructor 

Vo vyššie uvedenom kóde je objekt sv nazývaný druhý konštruktor, pričom oba majú rovnakú konfiguráciu. Prvá metóda nie je prístupná pre sv objekt. Interne bude objekt triedy vždy volať posledný konštruktor, ak má trieda viacero konštruktorov.

Poznámka: Preťaženie konštruktora nie je v Pythone povolené.

Funkcie triedy vstavané v Pythone

Zabudované funkcie definované v triede sú popísané v nasledujúcej tabuľke.

SN Funkcia Popis
1 getattr(obj,názov,predvolené) Používa sa na prístup k atribútu objektu.
2 setattr(obj, meno, hodnota) Používa sa na nastavenie konkrétnej hodnoty pre špecifický atribút objektu.
3 delattr(obj, meno) Používa sa na odstránenie konkrétneho atribútu.
4 hasattr(obj, meno) Ak objekt obsahuje nejaký špecifický atribút, vráti hodnotu true.

Príklad

 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) 

Výkon:

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

Vstavané atribúty triedy

Spolu s ostatnými atribútmi trieda Python obsahuje aj niektoré vstavané atribúty triedy, ktoré poskytujú informácie o triede.

Vstavané atribúty triedy sú uvedené v tabuľke nižšie.

SN Atribút Popis
1 __diktovať__ Poskytuje slovník obsahujúci informácie o mennom priestore triedy.
2 __doc__ Obsahuje reťazec, ktorý má dokumentáciu triedy
3 __názov__ Používa sa na prístup k názvu triedy.
4 __modul__ Používa sa na prístup k modulu, v ktorom je táto trieda definovaná.
5 __základy__ Obsahuje n-ticu vrátane všetkých základných tried.

Príklad

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

Výkon:

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