Встречается на собеседованиях • сегодня

В чем разница декораторов @staticmethod и @classmethod с точки зрения принимаемых аргументов

Основное отличие в том, какие аргументы автоматически передаются в метод:

  • @staticmethod не получает никаких специальных аргументов - это просто функция внутри класса. Работает как обычная функция, но вызывается через класс или экземпляр.
  • @classmethod первым аргументом получает сам класс (обычно называемый cls). Это позволяет обращаться к атрибутам класса и создавать его экземпляры.

Пример:

python
class MyClass:
    @staticmethod
    def static_method(x):
        return x * 2

    @classmethod
    def class_method(cls, x):
        return cls.__name__ + str(x)

# Вызов
MyClass.static_method(5)  # 10
MyClass.class_method(5)   # 'MyClass5'

Ключевые моменты:

  1. staticmethod - чистая функция, не знает о классе
  2. classmethod знает о классе через cls
  3. Оба могут вызываться как через класс, так и через экземпляр
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы