Концепції ООП у Python

pic

Об'єктно-орієнтоване програмування (OOP) в Python базується на основних принципах: Клас, Об'єкт, Метод, Наслідування, Поліморфізм, Абстракція даних та Інкапсуляція. Давайте розглянемо їх простими словами.

1. Клас і Об'єкт

  • Клас: Це план або шаблон для створення об'єктів. Він визначає властивості та поведінку.
  • Об'єкт: Це екземпляр класу. Він зберігає дані (атрибути) та виконує дії (методи), визначені в класі.
class Dog:   
 def __init__(self, name, age):   
 self.name = name   
 self.age = age   

 def bark(self):   
 print(f"{self.name} is barking!")   

# Створення об'єкта з класу Dog   
my_dog = Dog("Buddy", 5)   
my_dog.bark() # Вивід: Buddy is barking!

2.

Метод

  • Функції, визначені всередині класу, які працюють з даними об'єкта.
class Circle:   
 def __init__(self, radius):   
 self.radius = radius   

 def area(self):   
 return 3.14 * self.radius ** 2   

circle = Circle(10)   
print(circle.area()) # Вивід: 314.0

3. Наслідування

  • Дозволяє класу успадковувати атрибути та методи від іншого класу.
  • Сприяє повторному використанню коду та зменшує дублювання.
class Animal:   
 def speak(self):   
 print("Animal speaks")   

class Dog(Animal):   
 def speak(self):   
 print("Dog barks")   

d = Dog()   
d.speak() # Вивід: Dog barks

4.

Поліморфізм

  • Дозволяє об'єктам бути обробленими як екземпляри їх батьківського класу.
  • Дає можливість різним класам визначати однакові методи різними способами.
class Shape:   
 def area(self):   
 pass   

class Circle(Shape):   
 def area(self):   
 return 3.14 * 5 ** 2   

class Square(Shape):   
 def area(self):   
 return 4 ** 2   

shapes = [Circle(), Square()]   
for shape in shapes:   
 print(shape.area()) # Вивід: 78.5, 16

5. Абстракція даних

  • Приховує складність реалізації та надає тільки необхідні деталі.
  • Орієнтовано на те, що об'єкт робить, а не на те, як це відбувається.
class Car:   
 def __init__(self, brand):   
 self._brand = brand # Інкапсуляція даних  

 def display(self):   
 print(f"Car brand: {self._brand}")  

my_car = Car("Toyota")   
my_car.display() # Вивід: Car brand: Toyota

6.

Інкапсуляція

  • Об'єднання даних (атрибутів) та методів (функцій) в межах одного класу.
  • Приховує внутрішній стан об'єкта від зовнішнього доступу.
class BankAccount:   
 def __init__(self, balance):   
 self._balance = balance # Приватний атрибут   

 def deposit(self, amount):   
 self._balance += amount   

 def get_balance(self):   
 return self._balance   

account = BankAccount(1000)   
account.deposit(500)   
print(account.get_balance()) # Вивід: 1500




Перекладено з: [Oops Concepts in Python](https://medium.com/@sb.gorkhali/oops-concepts-in-python-6d4e9b14ac89?source=rss------oop-5)

Leave a Reply

Your email address will not be published. Required fields are marked *