logo

Python konstruktorius

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

  1. Parametrizuotas konstruktorius
  2. 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__