Абстрактные классы и методы

Абстрактные классы и методы в Python:

Абстрактный класс:

  • Описание: Абстрактный класс - это класс, который не может быть инстанциирован (создан объект этого класса напрямую). Его целью является предоставление общего интерфейса для всех классов-наследников. Абстрактные классы создаются с использованием модуля abc (Abstract Base Classes).

  • Пример:

    from abc import ABC, abstractmethod
    
    class Shape(ABC):
        @abstractmethod
        def area(self):
            pass
    
        @abstractmethod
        def perimeter(self):
            pass

Абстрактный метод:

  • Описание: Абстрактный метод - это метод, который объявлен в абстрактном классе, но не предоставляет реализацию. Классы-наследники обязаны предоставить конкретную реализацию для всех абстрактных методов.

  • Пример:

    from abc import ABC, abstractmethod
    
    class Shape(ABC):
        @abstractmethod
        def area(self):
            pass
    
        @abstractmethod
        def perimeter(self):
            pass
    
    class Circle(Shape):
        def __init__(self, radius):
            self.radius = radius
    
        def area(self):
            return 3.14 * self.radius ** 2
    
        def perimeter(self):
            return 2 * 3.14 * self.radius

Использование абстрактного класса и методов:

# Это приведет к ошибке, так как нельзя создать экземпляр абстрактного класса
shape = Shape()  # TypeError

# Создание экземпляра класса-наследника
my_circle = Circle(5)

# Вызов абстрактных методов
area_result = my_circle.area()
perimeter_result = my_circle.perimeter()

print(area_result)       # Вывод: 78.5
print(perimeter_result)  # Вывод: 31.4

Last updated