Как вызвать статический метод из статической переменной внутри класса? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь реализовать простой класс со статическими переменными и статическими методами:

class X(object):
    @staticmethod
    def do_something(par):
        # do something with parameter par
        #...
        return something

    static_var = X.do_something(5) #<-- that's how I call the function

Но у меня есть ошибка NameError: name 'X' is not defined.

Как сделать вызов этой статической функции

1 Ответ

0 голосов
/ 24 ноября 2018

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

class X:
    @staticmethod
    def do_something(par):
        return par

    static_var = do_something.__func__(5)


print(X.static_var)

Вывод:

5

Попробуйте!

Ссылка на статический метод класса X непосредственно внутри определения X завершается ошибкой, поскольку X еще не существует.Однако, поскольку вы определили @staticmethod do_something, вы можете вызвать его атрибут __func__ с параметром и присвоить результат static_var.

Сказав это, вы получите дополнительную информацию о базовой цели проектирования.Попытка реализовать может выявить лучший подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...