🧩 @abstractmethod — когда нужен
Используется в абстрактных классах, когда ты хочешь:
👉 заставить другие классы реализовать метод
📌 Когда применять:
- есть базовый класс (шаблон)
- ты не знаешь реализацию, но знаешь, что метод должен быть
- хочешь избежать забытых методов у наследников
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
Теперь любой класс-наследник ОБЯЗАН реализовать метод:
class Dog(Animal):
def make_sound(self):
return "Woof"
❌ Если не реализовать → будет ошибка
💡 Когда использовать:
👉 когда делаешь архитектуру / каркас программы
⚙️ @staticmethod — когда нужен
Это просто обычная функция внутри класса, которая:
👉 не использует ни self, ни cls
📌 Когда применять:
- функция логически связана с классом
- но не зависит от объекта или класса
class MathUtils:
@staticmethod
def add(a, b):
return a + b
Использование:
print(MathUtils.add(2, 3)) # 5
💡 Когда использовать:
👉 когда функция “по смыслу относится к классу”, но не использует его данные
⚖️ Быстрое сравнение:
| Декоратор | Использует | Зачем нужен |
|---|---|---|
| @abstractmethod | — | Заставляет реализовать метод |
| @staticmethod | ничего | Просто функция внутри класса |
🧠 Простое правило:
🔒 @abstractmethod → “ты обязан это реализовать”
⚙️ @staticmethod → “это просто функция, но пусть будет в классе”
Anastasiia Berest
Senior Web UI Engineer