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.
- Parametrizovaný konštruktor
- 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__