从静态方法访问静态变量

时间:2012-06-27 19:38:48

标签: python oop static-methods static-variables

我想从静态方法访问静态变量:

#!/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

2 个答案:

答案 0 :(得分:18)

使用@classmethod代替@staticmethod。在写完问题之后就找到了它。

在许多语言(C ++,Java等)中,“静态”和“类”方法是同义词。 Not in Python.

答案 1 :(得分:11)

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

您不能使用self.name,因为未定义self。 self是非静态方法或非类方法方法的第一个参数的命名约定。它指向您调用该方法的对象。由于您的方法是静态的,因此您不需要对象来调用它。