Mediumabc
Что такое @abstractmethod?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
@abstractmethod (из abc) — декоратор для abstract method в abstract base class (ABC). Нельзя создать instance класса с нереализованным abstract method.
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def speak(self) -> str:
...
@abstractmethod
def legs(self) -> int:
...
# Animal() → TypeError
class Dog(Animal):
def speak(self): return 'woof'
def legs(self): return 4
Dog() # OK — все abstract реализованы@classmethod+@abstractmethod— порядок важен (@abstractmethodближе кdef);- ABC можно использовать без abstractmethod (для isinstance checks);
register()— виртуальный подкласс (isinstance без наследования);collections.abc— встроенные ABC: Iterable, Sequence, Mapping, Callable, Hashable;typing.Protocol(Python 3.8) — structural typing, без наследования.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.