Python类中带有静态方法和对self的引用

9

我有一个类,在其中我想从静态方法中引用self。 有没有办法做到这一点?

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

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


print(User.all())

你的目标是什么?你想要打印所有“用户”的属性吗? - Ethan Furman
@EthanFurman 这是用作占位符对象,将一组常量传递到API中的序列化器中。因此,回答您的问题,是的,它是可以使用的。 - Gunther
2个回答

10
用classmethod方法来实现这一点。其工作原理是,第一个参数是类本身,您可以使用点运算符访问变量。
例如:
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


从Python 3.11开始,如果您想要进行类型提示,库typing_extensions包含Self,它指的是当前作用域内的类。 - Stephan Samuel

5

不,没有。

staticmethod 的重点在于它不需要实例 (self) 或类 (通常称为 cls) 的信息来完成其工作。

如果你的 staticmethod 需要 self,那么它就不是一个 staticmethod,你应该普通地定义它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接