Доступ к статической переменной из статического метода

Я хочу получить статическую переменную из статического метода:

#!/usr/bin/env python
class Messenger:
    name = "world"
    @staticmethod
    def get_msg(grrrr):
        return "hello " + grrrr.name

print Messenger.get_msg(Messenger)

Как это сделать без передачи grrrr методу? Это настоящий ООП?..

Все, что похоже на name или self.name, похоже, не работает:

NameError: global name 'name' is not defined

и

NameError: global name 'self' is not defined
+11
источник поделиться
2 ответа

Используйте @classmethod вместо @staticmethod. Нашел его сразу после написания вопроса.

На многих языках (С++, Java и т.д.) "статические" и "классные" методы являются синонимами. Не в Python.

+14
источник
def get_msg():
    return "hello " + Messenger.name

Вы не можете использовать self.name, потому что self не определен. self - это соглашение об именах для первого параметра нестатических или неклассовых методов. Он указывает на объект, на который вы вызвали метод. Поскольку вы являетесь методом static, вам не нужен объект для его вызова.

+8
источник

Посмотрите другие вопросы по меткам или Задайте вопрос