Access static variable from static method

I want to access a static variable from a static method:

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

print Messenger.get_msg(Messenger)

How to do it without passing grrrr to a method? Is this the true OOP?..

Anything like name or self.name seems not working:

NameError: global name 'name' is not defined

and

NameError: global name 'self' is not defined

Use @classmethod instead of @staticmethod . Found it just after writing the question.

In many languages (C++, Java etc.) "static" and "class" methods are synonyms. Not in Python.


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

You can't use self.name because self is not defined. self is a naming convention for the first parameter of non-static or non-classmethod methods. It points to the object on which you called the method. Since you're method is static, you don't need an object to call it on.

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

上一篇: spacy lemmatizer如何工作?

下一篇: 从静态方法访问静态变量