2024-04-25 11:50:05 发布
网友
我最近使用pycharm和sonarqube来检查我的代码。这两个工具都建议更新许多方法,例如get_success_url,这些方法没有在它们的主体中使用self,而是使用@staticmethod装饰器。你知道吗
get_success_url
self
@staticmethod
我完全明白为什么,但我觉得这几乎是毫无意义的。关于性能,我不确定它是否会有帮助。此外,这些方法通常被django方法覆盖。我能安全地使用那个装饰器吗?或者它毫无意义,不值得花时间去更新?你知道吗
就性能而言,一个简单的示例表明,调用静态方法比调用实例方法(这是您所期望的,因为它不必传递实例引用)稍微高效一些:
>>> class Test(object): def method(self): pass @staticmethod def static_method(): pass >>> import timeit >>> setup = 'from __main__ import Test;t = Test()' >>> timeit.timeit('t.method()', setup=setup) 0.1694500121891134 >>> timeit.timeit('t.static_method()', setup=setup) 0.14622945482461702
在安全性方面,假设您的方法实际上没有引用实例(或重写的方法实现),切换到@staticmethod将不会有什么区别。
就可读性而言,它告诉查看代码的人您实际上已经考虑了设计,并且self不是有意在正文中使用的,不是偶然使用的。
就性能而言,一个简单的示例表明,调用静态方法比调用实例方法(这是您所期望的,因为它不必传递实例引用)稍微高效一些:
在安全性方面,假设您的方法实际上没有引用实例(或重写的方法实现),切换到
@staticmethod
将不会有什么区别。就可读性而言,它告诉查看代码的人您实际上已经考虑了设计,并且
self
不是有意在正文中使用的,不是偶然使用的。相关问题 更多 >
编程相关推荐