Python类的静态方法与self引用

9 投票
2 回答
6545 浏览
提问于 2025-04-18 11:40

我有一个类,在这个类里面我想在一个静态方法中引用 self。请问有没有办法做到这一点呢?

class User(object):
    email = "username"
    password = "********"

    @staticmethod
    def all():
        return {"ex": self.password}


print(User.all())

2 个回答

6

不,没有这样的东西。

staticmethod 的意思是它在工作时不需要任何实例(也就是通常说的 self)或者类的信息(通常叫 cls)。

如果你的 staticmethod 需要 self,那么它就不是一个真正的 staticmethod,你应该正常定义它。

10

要实现这个功能,可以使用类方法。类方法的工作原理是,第一个参数是类本身,这样你就可以通过点操作符来访问类里的变量。

举个例子:

class User(object):
    email = "username"
    password = "********"

    @classmethod
    def all(cls):
        return {"ex": cls.password}


print(User.all())

https://docs.python.org/2/library/functions.html#classmethod

撰写回答