Конструктор — це спеціальний тип методу (функції), який використовується для ініціалізації членів екземпляра класу.
У C++ або Java конструктор має те саме ім’я, що й його клас, але в Python він трактує конструктор інакше. Він використовується для створення об'єкта.
Конструктори можуть бути двох видів.
- Параметризований конструктор
- Непараметризований конструктор
Визначення конструктора виконується, коли ми створюємо об'єкт цього класу. Конструктори також перевіряють, чи достатньо ресурсів для виконання об’єктом будь-якого завдання запуску.
Створення конструктора на python
У Python метод the __heat__() моделює конструктор класу. Цей метод викликається під час створення екземпляра класу. Він приймає себе -keyword як перший аргумент, який дозволяє отримати доступ до атрибутів або методу класу.
Ми можемо передати будь-яку кількість аргументів під час створення об’єкта класу, залежно від __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,name,default) | Він використовується для доступу до атрибута об'єкта. |
2 | setattr(obj, ім'я, значення) | Він використовується для встановлення певного значення конкретного атрибута об’єкта. |
3 | delattr(об'єкт, ім'я) | Він використовується для видалення певного атрибута. |
4 | hasattr(об'єкт, ім'я) | Він повертає 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 | __module__ | Він використовується для доступу до модуля, в якому визначено цей клас. |
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__