Об'єктно-орієнтоване програмування (ООП)
Створення класів та об'єктів
Створення простого класу
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