Back to Blog

Когда использовать @abstractmethod и @staticmethod в Python

Anastasiia Berest 3 min read

🧩 @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

Anastasiia Berest

Senior Web UI Engineer

I'm a web development passionate about creating meaningful digital experiences.