logo

Конструктор на Python

Конструкторът е специален тип метод (функция), който се използва за инициализиране на членовете на екземпляра на класа.

В C++ или Java конструкторът има същото име като неговия клас, но третира конструктора по различен начин в Python. Използва се за създаване на обект.

Конструкторите могат да бъдат два вида.

  1. Параметризиран конструктор
  2. Непараметризиран конструктор

Дефиницията на конструктора се изпълнява, когато създаваме обекта от този клас. Конструкторите също така проверяват дали има достатъчно ресурси за обекта, за да изпълни всяка задача при стартиране.

Създаване на конструктор в python

В Python методът the __heat__() симулира конструктора на класа. Този метод се извиква, когато класът е инстанциран. То приема себе си -ключова дума като първи аргумент, който позволява достъп до атрибутите или метода на класа.

Можем да предадем произволен брой аргументи по време на създаване на обекта на класа, в зависимост от __heat__() определение. Използва се най-вече за инициализиране на атрибутите на класа. Всеки клас трябва да има конструктор, дори ако просто разчита на конструктора по подразбиране.

Разгледайте следния пример за инициализиране на Служител атрибути на класа.

Пример

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

Изход:

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

Преброяване на броя на обектите на клас

Конструкторът се извиква автоматично, когато създаваме обекта на класа. Помислете за следния пример.

Пример

 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) 

Изход:

 The number of students: 3 

Python непараметризиран конструктор

Непараметризираният конструктор се използва, когато не искаме да манипулираме стойността или конструкторът, който има само self като аргумент. Помислете за следния пример.

Пример

 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

Параметризираният конструктор има множество параметри заедно с себе си . Помислете за следния пример.

Пример

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

Изход:

 This is parametrized constructor Hello John 

Конструктор по подразбиране на Python

Когато не включим конструктора в класа или забравим да го декларираме, тогава това става конструкторът по подразбиране. Той не изпълнява никакви задачи, но инициализира обектите. Помислете за следния пример.

Пример

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

Изход:

 101 Joseph 

Повече от един конструктор в един клас

Нека да разгледаме друг сценарий, какво се случва, ако декларираме двата същите конструктора в класа.

Пример

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

Изход:

 The Second Constructor 

В горния код обектът ул наречен втори конструктор, докато и двата имат една и съща конфигурация. Първият метод не е достъпен от ул обект. Вътрешно, обектът на класа винаги ще извиква последния конструктор, ако класът има множество конструктори.

Забележка: Претоварването на конструктора не е разрешено в Python.

Вградени в Python класови функции

Вградените функции, дефинирани в класа, са описани в следващата таблица.

SN функция Описание
1 getattr(obj,име,по подразбиране) Използва се за достъп до атрибута на обекта.
2 setattr(obj, име,стойност) Използва се за задаване на определена стойност на конкретния атрибут на обект.
3 delattr(obj, име) Използва се за изтриване на определен атрибут.
4 hasattr(obj, име) Връща true, ако обектът съдържа някакъв специфичен атрибут.

Пример

 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) 

Изход:

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

Вградени атрибути на класа

Заедно с другите атрибути, класът на Python също съдържа някои вградени атрибути на класа, които предоставят информация за класа.

Вградените атрибути на класа са дадени в таблицата по-долу.

SN Атрибут Описание
1 __dict__ Той предоставя речника, съдържащ информацията за пространството от имена на класа.
2 __doc__ Той съдържа низ, който има документацията на класа
3 __име__ Използва се за достъп до името на класа.
4 __модул__ Използва се за достъп до модула, в който е дефиниран този клас.
5 __бази__ Той съдържа кортеж, включващ всички базови класове.

Пример

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

Изход:

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