Оба вызова корректны: Developer.greet() и Developer().greet() вернут Hello World!. Staticmethod не передаёт функции автоматически ни self, ни cls.
Как правильно вызвать статический метод в Python
Оба вызова корректны: 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 без изменения способа вызова не нужно: текущая функция не использует состояние объекта.