【发布时间】:2016-01-07 04:59:40
【问题描述】:
我最近使用 pycharm 和 sonarqube 来检查我的代码。这两个工具都建议更新很多方法,例如get_success_url,它们在它们的主体中没有使用self,以使用@staticmethod 装饰器。
我完全理解为什么,但我觉得这几乎毫无意义。关于性能,我不确定它是否会有帮助。此外,这些通常是被覆盖的 django 方法。我可以安全地使用那个装饰器吗,或者它没有意义,不值得花时间去更新?
【问题讨论】:
-
我个人认为这可能是我唯一禁用的检查,因为我也有这种感觉。
-
methods you're overriding 使用
self- 你不是调用基本实现吗?为什么不呢? -
如果我有类似
def get_success_url(): return reverse_lazy('admin_team_list')的东西怎么办? (是的,我知道我可以直接用success_url = ...指定 -
使用静态方法的一个好处是它告诉代码的读者您实际上已经考虑过设计,并且没有使用
self,因为它不是必需的,而是而不是意外错过,或者打算在子类中引入。我猜静态方法在运行时会稍微高效一些,因为它们不需要引用实例(timeit同意我的观点),并且如果你不使用self那么就安全而言切换不会有问题。