Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: classmethod, staticmethod, decorator, oop

Чем отличаются декораторы classmethod и staticmethod?

Этот вопрос проверяет знание различий между двумя декораторами в Python: classmethod и staticmethod, а также их назначение и поведение.

Короткий ответ

  • classmethod получает в качестве первого аргумента сам класс (по умолчанию cls), а не экземпляр. Он используется для методов, которые работают с классом, а не с объектами.

  • staticmethod не получает ни класс, ни экземпляр в качестве первого аргумента и работает как обычная функция, которая логически связана с классом.

Длинный ответ

classmethod

Декоратор classmethod используется для того, чтобы метод мог работать с классом, а не с экземпляром. Это полезно, когда нужно создавать методы, которые касаются всего класса, а не конкретных объектов. Такой метод принимает первым аргументом сам класс (обычно его называют cls), а не экземпляр класса.

Пример с classmethod:

class MyClass:
    	count = 0

    	def __init__(self):
        	MyClass.count += 1

    	@classmethod
    	def get_count(cls):
        	return cls.count

obj1 = MyClass()
obj2 = MyClass()
print(MyClass.get_count())  # Выведет 2

staticmethod

Декоратор staticmethod используется, когда метод не зависит ни от класса, ни от экземпляра. Это обычная функция, которая логически привязана к классу, но не использует его атрибуты и методы. Такой метод не принимает ни self, ни cls в качестве первого аргумента.

Пример с staticmethod:

class MyClass:
    	@staticmethod
    	def greet(name):
        	return f"Hello, {name}"

print(MyClass.greet("Alice"))  # Выведет "Hello, Alice"

Основное различие

classmethod работает с классом и его атрибутами, а staticmethod — это обычная функция, которая может быть вызвана как часть класса, но не имеет доступа к его атрибутам или методам.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    1

Навыки

  • Python

    Python

Ключевые слова

#classmethod

#staticmethod

#decorator

#oop

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.