logo

Python-konstruktori

Konstruktori on erityinen menetelmä (funktio), jota käytetään luokan ilmentymien jäsenten alustamiseen.

C++:ssa tai Javassa konstruktorilla on sama nimi kuin luokassaan, mutta se käsittelee konstruktoria eri tavalla Pythonissa. Sitä käytetään objektin luomiseen.

Rakentajat voivat olla kahdenlaisia.

  1. Parametrisoitu rakentaja
  2. Parametrioimaton konstruktori

Konstruktorimäärittely suoritetaan, kun luomme tämän luokan objektin. Rakentajat varmistavat myös, että objektilla on tarpeeksi resursseja minkä tahansa käynnistystehtävän suorittamiseen.

Rakentajan luominen pythonissa

Pythonissa menetelmä the __lämpö__() simuloi luokan rakentajaa. Tätä menetelmää kutsutaan, kun luokka instantoidaan. Se hyväksyy itse -avainsana ensimmäisenä argumenttina, joka mahdollistaa pääsyn luokan attribuutteihin tai metodiin.

Voimme välittää minkä tahansa määrän argumentteja luokkaobjektia luotaessa riippuen __lämpö__() määritelmä. Sitä käytetään enimmäkseen luokan attribuuttien alustamiseen. Jokaisella luokalla on oltava rakentaja, vaikka se vain luottaisi oletuskonstruktoriin.

Harkitse seuraavaa esimerkkiä alustaaksesi Työntekijä luokan attribuutteja.

Esimerkki

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

Lähtö:

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

Luokan objektien lukumäärän laskeminen

Konstruktori kutsutaan automaattisesti, kun luomme luokan objektin. Harkitse seuraavaa esimerkkiä.

Esimerkki

 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) 

Lähtö:

 The number of students: 3 

Pythonin parametroimaton konstruktori

Parametrioimaton konstruktori käyttää, kun emme halua manipuloida arvoa tai rakentajaa, jolla on vain itse argumenttina. Harkitse seuraavaa esimerkkiä.

Esimerkki

 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-parametrisoitu konstruktori

Parametrisoidulla konstruktorilla on useita parametreja yhdessä itse . Harkitse seuraavaa esimerkkiä.

Esimerkki

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

Lähtö:

 This is parametrized constructor Hello John 

Pythonin oletuskonstruktori

Kun emme sisällytä konstruktoria luokkaan tai unohdamme ilmoittaa sen, siitä tulee oletuskonstruktori. Se ei suorita mitään tehtäviä, mutta alustaa objektit. Harkitse seuraavaa esimerkkiä.

Esimerkki

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

Lähtö:

 101 Joseph 

Enemmän kuin yksi rakentaja yhdessä luokassa

Katsotaanpa toista skenaariota, mitä tapahtuu, jos ilmoitamme kaksi samaa konstruktoria luokassa.

Esimerkki

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

Lähtö:

 The Second Constructor 

Yllä olevassa koodissa objekti st kutsutaan toiseksi konstruktoriksi, kun taas molemmilla on sama kokoonpano. Ensimmäinen menetelmä ei ole käytettävissä st esine. Sisäisesti luokan objekti kutsuu aina viimeistä konstruktoria, jos luokassa on useita rakentajia.

Huomautus: Rakentajan ylikuormitus ei ole sallittu Pythonissa.

Pythonin sisäänrakennetut luokan toiminnot

Luokassa määritellyt sisäänrakennetut funktiot on kuvattu seuraavassa taulukossa.

SN Toiminto Kuvaus
1 getattr(objekti,nimi,oletus) Sitä käytetään kohteen attribuutin käyttämiseen.
2 setattr(objekti, nimi,arvo) Sitä käytetään tietyn arvon asettamiseen objektin tietylle attribuutille.
3 delattr(objekti, nimi) Sitä käytetään tietyn määritteen poistamiseen.
4 hasattr(objekti, nimi) Se palauttaa tosi, jos objekti sisältää tietyn määritteen.

Esimerkki

 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) 

Lähtö:

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

Sisäänrakennetut luokan attribuutit

Muiden attribuuttien ohella Python-luokka sisältää myös joitain sisäänrakennettuja luokkaattribuutteja, jotka tarjoavat tietoa luokasta.

Sisäänrakennetut luokkaattribuutit on annettu alla olevassa taulukossa.

SN Attribuutti Kuvaus
1 __sanella__ Se tarjoaa sanakirjan, joka sisältää tiedot luokan nimiavaruudesta.
2 __doc__ Se sisältää merkkijonon, jossa on luokan dokumentaatio
3 __nimi__ Sitä käytetään pääsyyn luokan nimeen.
4 __moduuli__ Sitä käytetään pääsyyn moduuliin, jossa tämä luokka on määritetty.
5 __pohjat__ Se sisältää tuplen, joka sisältää kaikki perusluokat.

Esimerkki

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

Lähtö:

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