我想从静态方法访问静态变量:
#!/usr/bin/env python
class Messenger:
name = "world"
@staticmethod
def get_msg(grrrr):
return "hello " + grrrr.name
print Messenger.get_msg(Messenger)
如何在不将grrrr
传递给方法的情况下执行此操作?这是真正的OOP吗?..
name
或self.name
之类的内容似乎无效:
NameError: global name 'name' is not defined
和
NameError: global name 'self' is not defined
答案 0 :(得分:18)
使用@classmethod
代替@staticmethod
。在写完问题之后就找到了它。
在许多语言(C ++,Java等)中,“静态”和“类”方法是同义词。 Not in Python.
答案 1 :(得分:11)
def get_msg():
return "hello " + Messenger.name
您不能使用self.name,因为未定义self。 self是非静态方法或非类方法方法的第一个参数的命名约定。它指向您调用该方法的对象。由于您的方法是静态的,因此您不需要对象来调用它。