gpt4 book ai didi

python - @staticmethod 用于简单的类方法建议

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:52 28 4
gpt4 key购买 nike

我最近使用 pycharm 和 sonarqube 来审查我的代码。这两个工具都建议更新许多方法,例如 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 没有在正文中有意地使用,而不是无意的。

关于python - @staticmethod 用于简单的类方法建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com