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.
- Parametrizēts konstruktors
- 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__