Python类的静态方法与self引用
我有一个类,在这个类里面我想在一个静态方法中引用 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