Об'єктно-орієнтоване програмування (ООП)

Створення класів та об'єктів

Створення простого класу

class Animal: def __init__(self, name): self.name = name def speak(self): return f"{self.name} видає звук" # Створення об'єкта dog = Animal("Собака") print(dog.speak()) # Собака видає звук

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

Створення класу-нащадка

class Animal: def __init__(self, name): self.name = name def speak(self): return f"{self.name} видає звук" class Dog(Animal): def speak(self): return f"{self.name} гавкає" dog = Dog("Бадді") print(dog.speak()) # Бадді гавкає

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

Використання приватних змінних

class Person: def __init__(self, name, age): self.name = name self.__age = age def get_age(self): return self.__age person = Person("Аліса", 30) print(person.get_age()) # 30

Поліморфізм

Використання поліморфізму з різними класами

class Bird: def sound(self): return "Чірік" class Dog: def sound(self): return "Гав" def make_sound(animal): print(animal.sound()) bird = Bird() dog = Dog() make_sound(bird) make_sound(dog) # Чірік # Гав

Абстракція

Створення абстрактного класу

from abc import ABC, abstractmethod class Vehicle(ABC): @abstractmethod def drive(self): pass class Car(Vehicle): def drive(self): return "Автомобіль їде" car = Car() print(car.drive()) # Автомобіль їде

Методи класу та статичні методи

Використання @classmethod

class Person: count = 0 def __init__(self, name): self.name = name Person.count += 1 @classmethod def get_count(cls): return cls.count print(Person.get_count()) p1 = Person("Аліса") p2 = Person("Боб") print(Person.get_count()) # 0 # 2

Використання @staticmethod

class MathOperations: @staticmethod def add(a, b): return a + b print(MathOperations.add(3, 5)) # 8

Спеціальні методи (__str__, __len__, __eq__, тощо)

class Book: def __init__(self, title, pages): self.title = title self.pages = pages def __str__(self): return f"Книга: {self.title}" def __len__(self): return self.pages book = Book("Програмування на Python", 350) print(str(book)) print(len(book)) # Книга: Програмування на Python # 350