从静态方法访问静态变量

2024-05-23 14:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

print Messenger.get_msg(Messenger)

如何在不将grrrr传递给方法的情况下执行此操作?这是真的吗?。。

任何类似nameself.name的操作似乎都不起作用:

NameError: global name 'name' is not defined

以及

NameError: global name 'self' is not defined

Tags: nameselfenvgetbinisusr静态
2条回答
def get_msg():
    return "hello " + Messenger.name

无法使用self.name,因为未定义self。self是非静态或非classmethod方法的第一个参数的命名约定。它指向调用该方法的对象。因为方法是静态的,所以不需要对象来调用它。

使用@classmethod而不是@staticmethod。刚写完问题就找到了。

在许多语言(C++、java等)中,“静态”和“类”方法是同义词。Not in Python.

相关问题 更多 >