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.
- Parametrisoitu rakentaja
- 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__