logo

Python-konstruktør

En konstruktør er en speciel type metode (funktion), som bruges til at initialisere instansmedlemmerne af klassen.

I C++ eller Java har konstruktøren samme navn som sin klasse, men den behandler konstruktør anderledes i Python. Det bruges til at skabe et objekt.

Konstruktører kan være af to typer.

  1. Parametriseret konstruktør
  2. Ikke-parametriseret konstruktør

Konstruktørdefinition udføres, når vi opretter objektet i denne klasse. Konstruktører verificerer også, at der er nok ressourcer til, at objektet kan udføre enhver startopgave.

Oprettelse af konstruktøren i python

I Python er metoden __varme__() simulerer klassens konstruktør. Denne metode kaldes, når klassen instansieres. Den accepterer selv -søgeord som et første argument, der tillader adgang til klassens attributter eller metode.

Vi kan sende et hvilket som helst antal argumenter på tidspunktet for oprettelse af klasseobjektet, afhængigt af __varme__() definition. Det bruges mest til at initialisere klasseattributterne. Hver klasse skal have en konstruktør, selvom den blot er afhængig af standardkonstruktøren.

Overvej følgende eksempel for at initialisere Medarbejder klasse attributter.

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

Produktion:

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

At tælle antallet af objekter i en klasse

Konstruktøren kaldes automatisk, når vi opretter klassens objekt. Overvej 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) 

Produktion:

 The number of students: 3 

Python ikke-parameteriseret konstruktør

Den ikke-parametriserede konstruktør bruger, når vi ikke ønsker at manipulere værdien eller konstruktøren, der kun har sig selv som argument. Overvej 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 parametrerede konstruktør har flere parametre sammen med selv . Overvej 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() 

Produktion:

 This is parametrized constructor Hello John 

Python Default Constructor

Når vi ikke inkluderer konstruktøren i klassen eller glemmer at erklære den, bliver det standardkonstruktøren. Den udfører ikke nogen opgave, men initialiserer objekterne. Overvej følgende eksempel.

Eksempel

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

Produktion:

 101 Joseph 

Mere end én konstruktør i enkelt klasse

Lad os se på et andet scenarie, hvad sker der, hvis vi erklærer de to samme konstruktører i klassen.

Eksempel

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

Produktion:

 The Second Constructor 

I ovenstående kode er objektet st kaldet den anden konstruktør, mens begge har den samme konfiguration. Den første metode er ikke tilgængelig for st objekt. Internt vil klassens objekt altid kalde den sidste konstruktør, hvis klassen har flere konstruktører.

Bemærk: Konstruktøroverbelastning er ikke tilladt i Python.

Python indbyggede klassefunktioner

De indbyggede funktioner, der er defineret i klassen, er beskrevet i følgende tabel.

SN Fungere Beskrivelse
1 getattr(obj,navn,standard) Det bruges til at få adgang til objektets attribut.
2 setattr(objekt, navn, værdi) Det bruges til at indstille en bestemt værdi til den specifikke attribut for et objekt.
3 delattr(obj, navn) Det bruges til at slette en bestemt attribut.
4 hasattr(objekt, navn) Det returnerer sandt, hvis objektet indeholder en bestemt attribut.

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) 

Produktion:

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

Indbyggede klasseattributter

Sammen med de andre attributter indeholder en Python-klasse også nogle indbyggede klasseattributter, som giver information om klassen.

De indbyggede klasseattributter er angivet i nedenstående tabel.

SN Attribut Beskrivelse
1 __dikt__ Det giver ordbogen, der indeholder oplysningerne om klassens navneområde.
2 __doc__ Den indeholder en streng, som har klassens dokumentation
3 __navn__ Det bruges til at få adgang til klassenavnet.
4 __modul__ Det bruges til at få adgang til det modul, hvor denne klasse er defineret.
5 __baser__ Den indeholder en tupel inklusive 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__) 

Produktion:

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