logo

Python-konstruktør

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.

  1. Parameterisert konstruktør
  2. 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__