2012-06-27 100 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 ..

任何像nameself.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没有定义。 self是非静态或非类型方法的第一个参数的命名约定。它指向您调用该方法的对象。由于你的方法是静态的,所以你不需要一个对象来调用它。