Как правильно вызвать статический метод в Python

Оба вызова корректны: Developer.greet() и Developer().greet() вернут Hello World!. Staticmethod не передаёт функции автоматически ни self, ни cls.

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

Что ответить на собеседовании

Оба вызова корректны: Developer.greet() и Developer().greet() вернут Hello World!. Staticmethod не передаёт функции автоматически ни self, ни cls.

Подробный разбор

Ответ с пояснениями

Условие

В каком случае метод выполнится без исключений? Требуется поправить код.

class Developer:
    @staticmethod
    def greet():
        return "Hello World!"

# Оба вызова работают корректно:
print(Developer.greet())      # вызов через класс
print(Developer().greet())    # вызов через объект

Ответ

Оба вызова корректны: Developer.greet() и Developer().greet() вернут Hello World!. Staticmethod не передаёт функции автоматически ни self, ни cls.

Показанный код уже исправен и дважды напечатает одинаковую строку. Через класс вызывать статический метод обычно яснее, если экземпляр для задачи не нужен. Обычный instance-метод, напротив, получает экземпляр первым аргументом, а classmethod — класс. Добавлять self в greet без изменения способа вызова не нужно: текущая функция не использует состояние объекта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее