ВОПРОС · Q&A

Python @staticmetod

4 ответов 2,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор вопроса
Привет как на python из статического метода класса вызвать статический метод этого же класса. или это не возможно?

Python:
class cls:
    @staticmetod
    def fun1(var):
        return var
    
    @staticmetod
    def fun2():
        print(fun1("hello"))
 
Весь код сплошной косяк. Вы даже статик метод с ошибкой написали, правильно @staticmethod
Сразу укажу ещё на ошибки - название класса пишется с БОЛЬШОЙ буквы. И НЕЛЬЗЯ использовать для любых названий зарезервированные слова (здесь cls)

@staticmethod
означает, что когда этот метод вызывается, мы не передаем ему экземпляр класса, а значит, что нет необходимости передавать неявный аргумент, например self.
В принт писать функцию это вообще никуда не годится - таким образом на выходе будет объект, а не результат работы функции.

Статический метод - это метод, который ничего не знает о классе или экземпляре.
 
Да это я все знаю как пишется и с какой буквы. и зачем нужен @staticmetHod была необходимость вызывать один из другого.
 
Я уже ответил на ваш вопрос - выделено зелёным. Статический метод не может обращаться к объектам класса.

А вот рабочий код, и никаких классов здесь не требуется:

Python:
def fun1(enter):
    print(enter)


def fun2():
    fun1("hello")


fun2()
 
Я уже ответил на ваш вопрос - выделено зелёным. Статический метод не может обращаться к объектам класса.

А вот рабочий код, и никаких классов здесь не требуется:

Python:
def fun1(enter):
    print(enter)


def fun2():
    fun1("hello")


fun2()
Да, это для примера было написано, чтобы визуальное было понятно. Я понял, что нельзя так сделать. Спасибо!