我一直看到使用了以下装饰器:@staticmethod
,@property
例如:
@staticmethod
def add_url():
return reverse('add_user')
@property
def password_not_expired(self):
return not self.password_expired
有人可以解释何时使用其中一个?说我想添加此代码:
def get_user_type(self):
return self.user_type
我会使用@staticmethod
方法吗?
答案 0 :(得分:8)
您无法在self
中使用@staticmethod
。因为@staticmethod
唯一能做的就是让函数不被传递 self
。请查看您自己的示例:add_url
不会使用self
参数。
“静态”这里完全是误导性的C ++和Java如何使用它。 Python @staticmethod
实际上只是一个恰好存在于类中的常规函数,与值是否发生变化无关。
您可以在不编写二传手的情况下使用@property
。事实上,这可能是最常用的方式。