Django何时使用@staticmethod或@property

Pro*_*eus 4 python django

我不断看到使用了以下装饰:@staticmethod,@property例如:

@staticmethod
def add_url():
    return reverse('add_user')

@property
def password_not_expired(self):
    return not self.password_expired
Run Code Online (Sandbox Code Playgroud)

有人可以解释何时使用其中一个?说我想添加此代码:

def get_user_type(self):
    return self.user_type
Run Code Online (Sandbox Code Playgroud)

我会用一种@staticmethod方法吗?

Eev*_*vee 10

你不能用self@staticmethod.因为唯一@staticmethod能做的就是不要传递 函数self.看看你自己的例子:add_url不参与self辩论.

这里的"静态"是对C++和Java如何使用它的完全误导的意义.Python @staticmethod实际上只是一个恰好存在于类中的常规函数​​,与值是否发生变化无关.

您可以在@property不编写setter的情况下使用.事实上,这可能是最常用的方式.