logo

Konstruktor Pythonu

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ů.

  1. Parametrizovaný konstruktor
  2. 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á -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 . 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__