从静态方法访问静态变量

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

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

print Messenger.get_msg(Messenger)

如何做到这一点,而不grrrr传递给方法? 这是真正的面向对象吗?

任何像nameself.name似乎不工作:

NameError: global name 'name' is not defined

NameError: global name 'self' is not defined

使用@classmethod而不是@staticmethod 。 在写完问题后才发现它。

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


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

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

链接地址: http://www.djcxy.com/p/9185.html

上一篇: Access static variable from static method

下一篇: How can I have a Django signal call a model method?