Обе строки выполнятся без исключений. Print(Dev.hello) покажет представление функции, а print(Dev.hello()) вызовет её и выведет Hello world.
Условия корректного вызова метода
Обе строки выполнятся без исключений. Print(Dev.hello) покажет представление функции, а print(Dev.hello()) вызовет её и выведет Hello world.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
При каких обстоятельствах метод выполнится без возникновения исключений?
class Dev:
@staticmethod
def hello():
return "Hello world"
print(Dev.hello)
print(Dev.hello())
Ответ
Обе строки выполнятся без исключений. Print(Dev.hello) покажет представление функции, а print(Dev.hello()) вызовет её и выведет Hello world.
Первая строка получает объект функции, но не исполняет тело. Его представление обычно содержит имя и адрес, который зависит от запуска; фиксировать его точное значение нельзя. Скобки во второй строке выполняют вызов без аргументов, как и требует сигнатура. Благодаря staticmethod Python не подставляет self. Вызов через экземпляр Dev().hello() тоже допустим.