En konstruktør er en spesiell type metode (funksjon) som brukes til å initialisere forekomstmedlemmene i klassen.
I C++ eller Java har konstruktøren samme navn som sin klasse, men den behandler konstruktør annerledes i Python. Den brukes til å lage et objekt.
Konstruktører kan være av to typer.
- Parameterisert konstruktør
- Ikke-parameterisert konstruktør
Konstruktørdefinisjonen utføres når vi lager objektet til denne klassen. Konstruktører bekrefter også at det er nok ressurser til at objektet kan utføre enhver oppstartsoppgave.
Opprette konstruktøren i python
I Python er metoden __varme__() simulerer konstruktøren av klassen. Denne metoden kalles når klassen instansieres. Den aksepterer selv- -søkeord som et første argument som gir tilgang til attributtene eller metoden til klassen.
Vi kan sende et hvilket som helst antall argumenter når vi oppretter klasseobjektet, avhengig av __varme__() definisjon. Det brukes mest til å initialisere klasseattributtene. Hver klasse må ha en konstruktør, selv om den bare er avhengig av standardkonstruktøren.
Tenk på følgende eksempel for å initialisere Ansatt klasseattributter.
Eksempel
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()
Produksjon:
ID: 101 Name: John ID: 102 Name: David
Å telle antall objekter i en klasse
Konstruktøren kalles automatisk når vi lager objektet til klassen. Tenk på følgende eksempel.
Eksempel
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)
Produksjon:
The number of students: 3
Python ikke-parameterisert konstruktør
Den ikke-parametriserte konstruktøren bruker når vi ikke ønsker å manipulere verdien eller konstruktøren som kun har selvet som argument. Tenk på følgende eksempel.
Eksempel
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 Parameterized Constructor
Den parameteriserte konstruktøren har flere parametere sammen med selv- . Tenk på følgende eksempel.
Eksempel
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()
Produksjon:
This is parametrized constructor Hello John
Python Standard Konstruktør
Når vi ikke inkluderer konstruktøren i klassen eller glemmer å deklarere den, blir det standardkonstruktøren. Den utfører ingen oppgave, men initialiserer objektene. Tenk på følgende eksempel.
Eksempel
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Produksjon:
101 Joseph
Mer enn én konstruktør i enkeltklasse
La oss ta en titt på et annet scenario, hva skjer hvis vi erklærer de to samme konstruktørene i klassen.
Eksempel
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Produksjon:
The Second Constructor
I koden ovenfor, objektet st kalt den andre konstruktøren mens begge har samme konfigurasjon. Den første metoden er ikke tilgjengelig for st gjenstand. Internt vil objektet til klassen alltid kalle den siste konstruktøren hvis klassen har flere konstruktører.
Merk: Konstruktøroverbelastning er ikke tillatt i Python.
Python innebygde klassefunksjoner
De innebygde funksjonene definert i klassen er beskrevet i følgende tabell.
SN | Funksjon | Beskrivelse |
---|---|---|
1 | getattr(obj,navn,standard) | Den brukes for å få tilgang til attributtet til objektet. |
2 | setattr(objekt, navn, verdi) | Den brukes til å sette en bestemt verdi til den spesifikke egenskapen til et objekt. |
3 | delattr(objekt, navn) | Den brukes til å slette et spesifikt attributt. |
4 | hasattr(objekt, navn) | Det returnerer sant hvis objektet inneholder et bestemt attributt. |
Eksempel
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)
Produksjon:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Innebygde klasseattributter
Sammen med de andre attributtene inneholder en Python-klasse også noen innebygde klasseattributter som gir informasjon om klassen.
De innebygde klasseattributtene er gitt i tabellen nedenfor.
SN | Egenskap | Beskrivelse |
---|---|---|
1 | __dikt__ | Den gir ordboken som inneholder informasjonen om klassens navneområde. |
2 | __dok__ | Den inneholder en streng som har klassedokumentasjonen |
3 | __Navn__ | Den brukes for å få tilgang til klassenavnet. |
4 | __modul__ | Den brukes for å få tilgang til modulen som denne klassen er definert i. |
5 | __baser__ | Den inneholder en tuppel inkludert alle basisklasser. |
Eksempel
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__)
Produksjon:
None {'name': 'John', 'id': 101, 'age': 22} __main__