Konstruktor je speciální typ metody (funkce), která se používá k inicializaci členů instance třídy.
V C++ nebo Java má konstruktor stejný název jako jeho třída, ale v Pythonu s konstruktorem zachází jinak. Používá se k vytvoření objektu.
Konstruktéři mohou být dvou typů.
- Parametrizovaný konstruktor
- Neparametrizovaný konstruktor
Definice konstruktoru se provede, když vytvoříme objekt této třídy. Konstruktoři také ověřují, zda je k dispozici dostatek zdrojů pro objekt k provedení jakékoli úlohy spouštění.
Vytvoření konstruktoru v pythonu
V Pythonu je metoda the __teplo__() simuluje konstruktor třídy. Tato metoda je volána, když je třída konkretizována. Přijímá já -keyword jako první argument, který umožňuje přístup k atributům nebo metodě třídy.
Při vytváření objektu třídy můžeme předat libovolný počet argumentů v závislosti na __teplo__() definice. Většinou se používá k inicializaci atributů třídy. Každá třída musí mít konstruktor, i když se jednoduše spoléhá na výchozí konstruktor.
Zvažte následující příklad pro inicializaci Zaměstnanec atributy třídy.
Pří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ýstup:
ID: 101 Name: John ID: 102 Name: David
Počítání počtu objektů třídy
Konstruktor je volán automaticky, když vytváříme objekt třídy. Zvažte následující příklad.
Pří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ýstup:
The number of students: 3
Neparametrizovaný konstruktor Pythonu
Neparametrizovaný konstruktor se používá, když nechceme manipulovat s hodnotou nebo konstruktorem, který má jako argument pouze self. Zvažte následující příklad.
Pří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ý konstruktor Pythonu
Parametrizovaný konstruktor má více parametrů spolu s já . Zvažte následující příklad.
Pří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ýstup:
This is parametrized constructor Hello John
Výchozí konstruktor Pythonu
Když konstruktor nezahrneme do třídy nebo jej zapomeneme deklarovat, stane se výchozím konstruktorem. Neprovádí žádnou úlohu, ale inicializuje objekty. Zvažte následující příklad.
Příklad
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Výstup:
101 Joseph
Více než jeden konstruktor v jedné třídě
Podívejme se na další scénář, co se stane, když deklarujeme dva stejné konstruktory ve třídě.
Příklad
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Výstup:
The Second Constructor
Ve výše uvedeném kódu je objekt Svatý volá se druhý konstruktor, zatímco oba mají stejnou konfiguraci. První metoda není přístupná pro Svatý objekt. Interně bude objekt třídy vždy volat poslední konstruktor, pokud má třída více konstruktorů.
Poznámka: Přetěžování konstruktoru není v Pythonu povoleno.
Funkce třídy vestavěné v Pythonu
Vestavěné funkce definované ve třídě jsou popsány v následující tabulce.
SN | Funkce | Popis |
---|---|---|
1 | getattr(obj,jméno,výchozí) | Používá se pro přístup k atributu objektu. |
2 | setattr(obj, jméno, hodnota) | Používá se k nastavení konkrétní hodnoty konkrétního atributu objektu. |
3 | delattr(obj, jméno) | Slouží k odstranění konkrétního atributu. |
4 | hasattr(obj, jméno) | Vrací hodnotu true, pokud objekt obsahuje nějaký specifický atribut. |
Pří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ýstup:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Vestavěné atributy třídy
Spolu s ostatními atributy třída Pythonu také obsahuje některé vestavěné atributy třídy, které poskytují informace o třídě.
Vestavěné atributy třídy jsou uvedeny v tabulce níže.
SN | Atribut | Popis |
---|---|---|
1 | __diktovat__ | Poskytuje slovník obsahující informace o jmenném prostoru třídy. |
2 | __doc__ | Obsahuje řetězec, který má dokumentaci třídy |
3 | __název__ | Používá se pro přístup k názvu třídy. |
4 | __modul__ | Používá se pro přístup k modulu, ve kterém je tato třída definována. |
5 | __základy__ | Obsahuje n-tici včetně všech základních tříd. |
Pří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ýstup:
None {'name': 'John', 'id': 101, 'age': 22} __main__