Konstruktorius yra specialus metodo (funkcijos) tipas, naudojamas klasės egzempliorių nariams inicijuoti.
C++ arba Java kalboje konstruktorius turi tą patį pavadinimą kaip ir jo klasė, tačiau Python jis kitaip traktuoja konstruktorių. Jis naudojamas kuriant objektą.
Konstruktoriai gali būti dviejų tipų.
- Parametrizuotas konstruktorius
- Neparametrinis konstruktorius
Konstruktoriaus apibrėžimas vykdomas, kai sukuriame šios klasės objektą. Konstruktoriai taip pat patikrina, ar objektui yra pakankamai išteklių bet kokiai paleidimo užduočiai atlikti.
Konstruktoriaus kūrimas python
Python, metodas the __šiluma__() imituoja klasės konstruktorių. Šis metodas iškviečiamas, kai klasė sukuriama. Tai priima savarankiškai -raktinis žodis kaip pirmasis argumentas, leidžiantis pasiekti klasės atributus arba metodą.
Kurdami klasės objektą galime perduoti bet kokį argumentų skaičių, priklausomai nuo __šiluma__() apibrėžimas. Jis dažniausiai naudojamas klasės atributams inicijuoti. Kiekviena klasė turi turėti konstruktorių, net jei ji tiesiog remiasi numatytuoju konstruktoriumi.
Norėdami inicijuoti, apsvarstykite šį pavyzdį Darbuotojas klasės atributai.
Pavyzdys
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()
Išvestis:
ID: 101 Name: John ID: 102 Name: David
Klasės objektų skaičiaus skaičiavimas
Konstruktorius iškviečiamas automatiškai, kai sukuriame klasės objektą. Apsvarstykite toliau pateiktą pavyzdį.
Pavyzdys
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)
Išvestis:
The number of students: 3
Python neparametrizuotas konstruktorius
Neparametrinis konstruktorius naudojamas, kai nenorime manipuliuoti reikšme arba konstruktoriumi, kuris kaip argumentas turi tik save. Apsvarstykite toliau pateiktą pavyzdį.
Pavyzdys
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 parametrizuotas konstruktorius
Parametras konstruktorius turi kelis parametrus kartu su savarankiškai . Apsvarstykite toliau pateiktą pavyzdį.
Pavyzdys
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()
Išvestis:
This is parametrized constructor Hello John
Python numatytasis konstruktorius
Kai neįtraukiame konstruktoriaus į klasę arba pamirštame jį deklaruoti, tai tampa numatytuoju konstruktoriumi. Jis neatlieka jokios užduoties, bet inicijuoja objektus. Apsvarstykite toliau pateiktą pavyzdį.
Pavyzdys
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Išvestis:
101 Joseph
Daugiau nei vienas konstruktorius vienoje klasėje
Pažvelkime į kitą scenarijų, kas nutiks, jei klasėje deklaruosime du tuos pačius konstruktorius.
Pavyzdys
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Išvestis:
The Second Constructor
Aukščiau pateiktame kode objektas Šv vadinamas antruoju konstruktoriumi, o abu turi tą pačią konfigūraciją. Pirmasis metodas neprieinamas Šv objektas. Viduje klasės objektas visada iškvies paskutinį konstruktorių, jei klasėje yra keli konstruktoriai.
Pastaba: „Python“ neleidžiama konstruktoriaus perkrauti.
Python integruotos klasės funkcijos
Klasėje apibrėžtos integruotos funkcijos aprašytos šioje lentelėje.
SN | Funkcija | apibūdinimas |
---|---|---|
1 | getattr(obj,vardas,numatytasis) | Jis naudojamas norint pasiekti objekto atributą. |
2 | setattr(obj, vardas,vertė) | Jis naudojamas norint nustatyti tam tikrą objekto atributo reikšmę. |
3 | delattr(obj, vardas) | Jis naudojamas konkrečiam atributui ištrinti. |
4 | hasattr(obj, vardas) | Grąžinama tiesa, jei objekte yra koks nors konkretus atributas. |
Pavyzdys
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)
Išvestis:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Integruoti klasės atributai
Kartu su kitais atributais Python klasėje taip pat yra keletas integruotų klasės atributų, kurie suteikia informacijos apie klasę.
Įtaisytosios klasės atributai pateikti toliau esančioje lentelėje.
SN | Atributas | apibūdinimas |
---|---|---|
1 | __diktuoti__ | Jame pateikiamas žodynas, kuriame yra informacijos apie klasės vardų erdvę. |
2 | __doc__ | Jame yra eilutė, kurioje yra klasės dokumentacija |
3 | __vardas__ | Jis naudojamas norint pasiekti klasės pavadinimą. |
4 | __modulis__ | Jis naudojamas norint pasiekti modulį, kuriame yra apibrėžta ši klasė. |
5 | __bazės__ | Jame yra eilutė, apimanti visas bazines klases. |
Pavyzdys
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__)
Išvestis:
None {'name': 'John', 'id': 101, 'age': 22} __main__