Search code examples
pythonoopstatic-methodsstatic-variables

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

Solution

  • 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.