2012-06-27 2 views
12

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

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

print Messenger.get_msg(Messenger) 

Как сделать это без прохождения grrrr к методу? Это истинный OOP ..

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

NameError: global name 'name' is not defined 

и

NameError: global name 'self' is not defined 

ответ

14

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

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

8
def get_msg(): 
    return "hello " + Messenger.name 

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

Смежные вопросы