我有一个类,我想在静态方法中引用self
。有没有办法做到这一点?
class User(object):
email = "username"
password = "********"
@staticmethod
def all():
return {"ex": self.password}
print(User.all())
答案 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
,您应该正常定义它。