logo

Python konstruktors

Konstruktors ir īpaša veida metode (funkcija), ko izmanto, lai inicializētu klases instances locekļus.

Programmā C++ vai Java konstruktoram ir tāds pats nosaukums kā klasei, taču Python tas pret konstruktoru attiecas atšķirīgi. To izmanto, lai izveidotu objektu.

Konstruktori var būt divu veidu.

  1. Parametrizēts konstruktors
  2. Neparametrizēts konstruktors

Konstruktora definīcija tiek izpildīta, kad mēs izveidojam šīs klases objektu. Konstruktori arī pārbauda, ​​vai objektam ir pietiekami daudz resursu, lai veiktu jebkuru palaišanas uzdevumu.

Konstruktora izveide programmā python

Programmā Python metode __siltums__() simulē klases konstruktoru. Šī metode tiek izsaukta, kad tiek veikta klase. Tā pieņem sevi -keyword kā pirmais arguments, kas ļauj piekļūt klases atribūtiem vai metodei.

Klases objekta izveides laikā mēs varam nodot jebkuru argumentu skaitu atkarībā no __siltums__() definīcija. To galvenokārt izmanto, lai inicializētu klases atribūtus. Katrai klasei ir jābūt konstruktoram, pat ja tā vienkārši paļaujas uz noklusējuma konstruktoru.

Apsveriet šādu piemēru, lai inicializētu Darbinieks klases atribūti.

Piemērs

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

Izvade:

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

Klases objektu skaita skaitīšana

Konstruktors tiek izsaukts automātiski, kad mēs veidojam klases objektu. Apsveriet šādu piemēru.

Piemērs

 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) 

Izvade:

 The number of students: 3 

Python neparametrizēts konstruktors

Konstruktors bez parametriem izmanto, ja nevēlamies manipulēt ar vērtību vai konstruktoru, kuram kā arguments ir tikai es. Apsveriet šādu piemēru.

Piemērs

 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 parametrizētais konstruktors

Parametrizētajam konstruktoram ir vairāki parametri kopā ar sevi . Apsveriet šādu piemēru.

Piemērs

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

Izvade:

 This is parametrized constructor Hello John 

Python noklusējuma konstruktors

Ja mēs neiekļaujam konstruktoru klasē vai aizmirstam to deklarēt, tas kļūst par noklusējuma konstruktoru. Tas neveic nekādus uzdevumus, bet inicializē objektus. Apsveriet šādu piemēru.

Piemērs

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

Izvade:

 101 Joseph 

Vairāk nekā viens konstruktors vienā klasē

Apskatīsim citu scenāriju, kas notiks, ja klasē deklarēsim divus vienādus konstruktorus.

Piemērs

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

Izvade:

 The Second Constructor 

Iepriekš minētajā kodā objekts st sauc par otro konstruktoru, bet abiem ir vienāda konfigurācija. Pirmā metode nav pieejama st objektu. Iekšēji klases objekts vienmēr izsauks pēdējo konstruktoru, ja klasei ir vairāki konstruktori.

Piezīme. Konstruktora pārslodze Python nav atļauta.

Python iebūvētās klases funkcijas

Klasē definētās iebūvētās funkcijas ir aprakstītas nākamajā tabulā.

SN Funkcija Apraksts
1 getattr(obj,nosaukums,noklusējums) To izmanto, lai piekļūtu objekta atribūtam.
2 setattr(obj, nosaukums,vērtība) To izmanto, lai iestatītu noteiktu vērtību objekta konkrētajam atribūtam.
3 delattr(obj, vārds) To izmanto, lai dzēstu noteiktu atribūtu.
4 hasattr(obj, vārds) Tas atgriež patiesu, ja objekts satur kādu konkrētu atribūtu.

Piemērs

 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) 

Izvade:

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

Iebūvētie klases atribūti

Kopā ar citiem atribūtiem Python klasē ir arī daži iebūvēti klases atribūti, kas sniedz informāciju par klasi.

Iebūvētie klases atribūti ir norādīti zemāk esošajā tabulā.

SN Atribūts Apraksts
1 __dikt__ Tā nodrošina vārdnīcu, kurā ir informācija par klases nosaukumvietu.
2 __doc__ Tajā ir virkne, kurai ir klases dokumentācija
3 __vārds__ To izmanto, lai piekļūtu klases nosaukumam.
4 __modulis__ To izmanto, lai piekļūtu modulim, kurā šī klase ir definēta.
5 __bāzes__ Tajā ir kortežs, kas ietver visas bāzes klases.

Piemērs

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

Izvade:

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