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 your method is static, you don't need an object to call it on.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With