Об’єктно-орієнтоване програмування є фундаментальною концепцією Python, яка дає розробникам можливість створювати модульні програми, які можна підтримувати та масштабувати. Розуміючи основні принципи ООП — класи, об’єкти, успадкування, інкапсуляцію, поліморфізм і абстракцію — програмісти можуть використовувати весь потенціал можливостей ООП Python для розробки елегантних і ефективних рішень складних проблем.
Що таке об'єктно-орієнтоване програмування на Python?
У Python об’єктно-орієнтоване програмування (ООП) — це парадигма програмування, яка використовує об’єкти та класи в програмуванні. Він спрямований на реалізацію реальних сутностей, таких як успадкування, поліморфізм, інкапсуляція тощо в програмуванні. Основною концепцією об’єктно-орієнтованого програмування (ООП) або концепцій oops у Python є зв’язування даних і функцій, які працюють разом як єдине ціле, щоб жодна інша частина коду не мала доступу до цих даних.
Концепції ООП у Python
- Клас на Python
- Об'єкти в Python
- Поліморфізм у Python
- Інкапсуляція в Python
- Спадкування в Python
- Абстракція даних у Python

Концепції ООП Python
теорія дерев і графів
Клас Python
Клас - це сукупність об'єктів. Клас містить креслення або прототип, з якого створюються об’єкти. Це логічна сутність, яка містить деякі атрибути та методи.
Щоб зрозуміти необхідність створення класу, давайте розглянемо приклад. Скажімо, ви хочете відстежити кількість собак, які можуть мати різні атрибути, такі як порода та вік. Якщо використовується список, першим елементом може бути порода собаки, а другим — її вік. Припустімо, що є 100 різних собак, тоді як ви дізнаєтесь, який елемент яким має бути? Що, якби ви хотіли додати цим собакам інші властивості? Тут бракує організації, і це саме те, що потрібно для занять.
Деякі моменти щодо класу Python:
- Класи створюються за ключовим словом class.
- Атрибути - це змінні, які належать до класу.
- Атрибути завжди загальнодоступні, і до них можна отримати доступ за допомогою оператора крапка (.). Напр.: Myclass.Myattribute
Синтаксис визначення класу:
class ClassName: # Statement-1 . . . # Statement-N>
Створення порожнього класу в Python
У наведеному вище прикладі ми створили клас під назвою Dog за допомогою ключового слова class.
Python
# Python3 program to # demonstrate defining # a class class Dog: pass>
Об'єкти Python
В об’єктно-орієнтованому програмуванні Python об’єкт — це сутність, яка має стан і поведінку, пов’язані з ним. Це може бути будь-який об’єкт реального світу, як-от миша, клавіатура, стілець, стіл, ручка тощо. Цілі числа, рядки, числа з плаваючою комою, навіть масиви та словники – усі це об’єкти. Точніше, будь-яке окреме ціле число або будь-який окремий рядок є об’єктом. Число 12 — це об’єкт, рядок Hello, world — це об’єкт, список — це об’єкт, який може містити інші об’єкти тощо. Ви весь час використовували предмети і, можливо, навіть не усвідомлювали цього.
Об'єкт складається з:
- штат: Він представлений атрибутами об’єкта. Він також відображає властивості об'єкта.
- Поведінка: Він представлений методами об'єкта. Він також відображає реакцію об'єкта на інші об'єкти.
- Ідентичність: Він дає унікальне ім’я об’єкту та дозволяє одному об’єкту взаємодіяти з іншими об’єктами.
Щоб зрозуміти стан, поведінку та ідентичність, візьмемо приклад класової собаки (пояснено вище).
- Ідентичність можна розглядати як ім'я собаки.
- Станом або ознаками можна вважати породу, вік або колір собаки.
- За поведінкою можна визначити, чи собака їсть чи спить.
Створення об'єкта
Це створить об’єкт з іменем obj класу Dog, визначеного вище. Перш ніж заглибитися в об’єкти та класи, давайте розберемося з деякими основними ключовими словами, які використовуватимуться під час роботи з об’єктами та класами.
Python3 obj = Dog()>
Сам Python
- Методи класу повинні мати додатковий перший параметр у визначенні методу. Ми не надаємо значення для цього параметра, коли викликаємо метод, Python надає його
- Якщо у нас є метод, який не приймає аргументів, то ми все одно повинні мати один аргумент.
- Це схоже на цей покажчик у C++ і це посилання в Java.
Коли ми викликаємо метод цього об’єкта як myobject.method(arg1, arg2), Python автоматично перетворює його на MyClass.method(myobject, arg1, arg2) – це все, що стосується спеціального self.
Примітка: Для отримання додаткової інформації див self у класі Python
Метод Python __init__
The метод __init__ схожий на конструктори в C++ і Java. Він запускається, як тільки створюється екземпляр об’єкта класу. Метод корисний для виконання будь-якої ініціалізації, яку ви хочете виконати з вашим об’єктом. Тепер давайте визначимо клас і створимо кілька об’єктів за допомогою методу self і __init__.
Створення класу та об’єкта з атрибутами класу та екземпляра
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>
Вихід
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Створення класів і об'єктів за допомогою методів
Тут клас Dog визначається двома атрибутами:
- attr1 це атрибут класу зі значенням ссавець . Атрибути класу є спільними для всіх екземплярів класу.
- __init__ — це спеціальний метод (конструктор), який ініціалізує екземпляр класу Dog. Він приймає два параметри: self (посилається на екземпляр, що створюється) і name (представляє ім’я собаки). Параметр name використовується для призначення атрибута name кожному екземпляру Dog.
Метод speak визначено в класі Dog. Цей метод друкує рядок, який містить назву екземпляра собаки.
Код драйвера починається зі створення двох екземплярів класу Dog: Rodger і Tommy. Метод __init__ викликається для кожного екземпляра, щоб ініціалізувати їхні атрибути імені наданими іменами. Метод speak викликається в обох випадках (Rodger.speak() і Tommy.speak()), змушуючи кожну собаку друкувати оператор зі своїм іменем.
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>
Вихід
My name is Rodger My name is Tommy>
Примітка: Для отримання додаткової інформації див Класи та об’єкти Python
q3 місяці
Спадкування Python
В об’єктно-орієнтованому програмуванні Python успадкування — це здатність одного класу отримувати або успадковувати властивості від іншого класу. Клас, який отримує властивості, називається похідним класом або дочірнім класом, а клас, з якого походять властивості, називається базовим або батьківським класом. Перевагами спадкування є:
- Він добре відображає відносини в реальному світі.
- Він забезпечує повторне використання коду. Нам не потрібно писати один і той же код знову і знову. Крім того, це дозволяє нам додавати більше функцій до класу, не змінюючи його.
- Він має транзитивний характер, що означає, що якщо клас B успадковує інший клас A, то всі підкласи B автоматично успадковують клас A.
Види спадкування
- Єдине успадкування : однорівневе успадкування дозволяє похідному класу успадковувати характеристики від одного батьківського класу.
- Багаторівневе успадкування: Багаторівневе успадкування дозволяє похідному класу успадковувати властивості від безпосереднього батьківського класу, який, у свою чергу, успадковує властивості від свого батьківського класу.
- Ієрархічне успадкування: Успадкування на ієрархічному рівні дозволяє більш ніж одному похідному класу успадковувати властивості від батьківського класу.
- Множинне успадкування: Багаторівневе успадкування дозволяє одному похідному класу успадковувати властивості від кількох базових класів.
Спадкування в Python
У наведеній вище статті ми створили два класи, тобто Person (батьківський клас) і Employee (Child Class). Клас Employee успадковує клас Person. Ми можемо використовувати методи класу person через клас Employee, як це видно у функції відображення в коді вище. Дочірній клас також може змінювати поведінку батьківського класу, як видно за допомогою методу details().
Python3 # Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>
Вихід
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Примітка: Для отримання додаткової інформації зверніться до нашого Спадкування в Python підручник.
Поліморфізм Python
В об’єктно-орієнтованому програмуванні Python поліморфізм просто означає наявність багатьох форм. Наприклад, нам потрібно визначити, літають дані види птахів чи ні, використовуючи поліморфізм, ми можемо зробити це за допомогою однієї функції.
diff у python
Поліморфізм у Python
Цей код демонструє концепцію успадкування Python oops і перевизначення методів у класах Python. Він показує, як підкласи можуть перевизначати методи, визначені в батьківському класі, щоб забезпечити певну поведінку, успадковуючи інші методи від батьківського класу.
Python3 class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>
Вихід
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>
Примітка: Для отримання додаткової інформації зверніться до нашого Поліморфізм у Python Підручник.
Інкапсуляція Python
В об’єктно-орієнтованому програмуванні Python інкапсуляція є однією з фундаментальних концепцій об’єктно-орієнтованого програмування (ООП). Він описує ідею упаковки даних і методи, які працюють з даними в одному модулі. Це накладає обмеження на прямий доступ до змінних і методів і може запобігти випадковій зміні даних. Щоб запобігти випадковій зміні, змінну об’єкта можна змінити лише методом об’єкта. Ці типи змінних відомі як приватні змінні.
Клас є прикладом інкапсуляції, оскільки він інкапсулює всі дані, які є функціями-членами, змінними тощо.

Інкапсуляція в Python
У наведеному вище прикладі ми створили змінну c як приватний атрибут. Ми навіть не можемо отримати прямий доступ до цього атрибута і навіть не можемо змінити його значення.
Python3 # Python program to # demonstrate private members # '__' double underscore represents private attribute. # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>
Вихід
techcodeview.com>
Примітка: для отримання додаткової інформації зверніться до нашого Інкапсуляція в Python Підручник.
Абстракція даних
Він приховує непотрібні деталі коду від користувача. Крім того, коли ми не хочемо розголошувати конфіденційні частини реалізації нашого коду, і саме тут з’явилася абстракція даних.
Абстракції даних у Python можна досягти шляхом створення абстрактних класів.
Об'єктно-орієнтоване програмування на Python | Набір 2 (приховування даних і друк об’єктів)