从静态方法访问静态变量

Dmi*_*aev 17 python oop static-methods static-variables

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

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

print Messenger.get_msg(Messenger)
Run Code Online (Sandbox Code Playgroud)

没有传递grrrr给方法怎么做?这是真正的OOP吗?

任何喜欢nameself.name似乎不起作用的东西:

NameError: global name 'name' is not defined
Run Code Online (Sandbox Code Playgroud)

NameError: global name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)

Dmi*_*aev 20

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

在许多语言(C++,Java等)中,"静态"和"类"方法是同义词.不是在Python中.


Ioa*_*ucu 12

def get_msg():
    return "hello " + Messenger.name
Run Code Online (Sandbox Code Playgroud)

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