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

时间:2014-07-01 01:06:40

标签: python static-methods django-rest-framework

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

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

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


print(User.all())

2 个答案:

答案 0 :(得分:6)

这样做的方法是使用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

答案 1 :(得分:3)

不,没有。

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

如果您的staticmethod需要self,那么它不是staticmethod,您应该正常定义它。