Доступ к статической переменной из статического метода
Я хочу получить статическую переменную из статического метода:
#!/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
Используйте @classmethod
вместо @staticmethod
. Нашел его сразу после написания вопроса.
На многих языках (С++, Java и т.д.) "статические" и "классные" методы являются синонимами. Не в Python.
def get_msg():
return "hello " + Messenger.name
Вы не можете использовать self.name, потому что self не определен. self - это соглашение об именах для первого параметра нестатических или неклассовых методов. Он указывает на объект, на который вы вызвали метод. Поскольку вы являетесь методом static, вам не нужен объект для его вызова.
Связанные вопросы
Похожие вопросы
Посмотрите другие вопросы по меткам python oop static-methods static-variables или Задайте вопрос