Назад к вопросам
Middle
68
questionbank
Что такое абстрактный метод?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Это метод в абстрактном классе, который объявлен, но не имеет реализации. Он должен быть обязательно переопределен (реализован) в любом неабстрактном классе-наследнике.
Пример использования в Python с модулем abc:
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): # Обязательная реализация area()
return 3.14 * self.radius ** 2
def perimeter(self): # Обязательная реализация perimeter()
return 2 * 3.14 * self.radius
# Создание экземпляра абстрактного класса Shape невозможно:
# s = Shape() # Вызовет TypeError
Ключевые моменты:
- Определяются с использованием декоратора
@abstractmethod. - Находятся внутри абстрактных классов (классов-наследников
ABCили с метаклассомABCMeta). - Призваны обеспечить единообразие интерфейсов в иерархии классов.
- Наличие абстрактного метода делает класс абстрактным, даже если он не наследует
ABC.