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.
- Parametriseret konstruktør
- 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__