当前位置: 首页 > 知识库问答 >
问题:

@建议使用简单类方法的staticmethod

梁俊智
2023-03-14

我最近使用py魅力和sonarqube来审查我的代码。这两个工具都建议更新很多方法,例如get_success_url,它们的主体中没有使用self,而是使用@staticmethod装饰器。

我完全理解为什么,但我觉得它几乎毫无意义。关于性能,我不确定它会有那么大的帮助。此外,这些通常是被覆盖的django方法。我可以安全地使用那个装饰器吗?或者它毫无意义,不值得花时间更新?

共有1个答案

华景同
2023-03-14

>

>>> 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不是故意在主体中使用的,而不是意外使用的。

 类似资料:
  • 也许有一些我看不到的非常简单的东西。我正在尝试从某个API调用一个方法,这个方法要求PendingIntent异步向我发送一些值。我已经阅读了半小时的文档和示例,无法理解简单的方法。 更准确地说,我想调用ActivityRecognitionApi。为了举例说明,我是如何从类似的api接收位置的: 所以我想做同样的事情来接收认可的活动: 那么,创建一个PendingEvent来获取价值的简单方法是

  • 我有以下问题: 我已经为安全性创建了注释: 在我具有类之间的继承性的情况下,是否也有可能所有类都具有@Security注释来获得最具体的定义? 约西

  • 问题内容: 我正在尝试使用JSON(使用simplejson)序列化python对象列表,并收到以下错误:对象“不可JSON序列化”。 该类是一个简单的类,其字段只有整数,字符串和浮点数,并且从一个父超类继承相似的字段,例如: foo,bar是我上面提到的简单类型。唯一棘手的事情是,ChildClass有时具有一个字段,该字段引用另一个对象(类型不是ParentClass或ChildClass)。

  • 问题内容: 我试图得到昨天的日期。所以我写了下一个函数: 但这给了我下一个警告: 而且它没有用。 谢谢您的帮助。 问题答案: Date#getDate() 是JDK 1.1之后不推荐使用的方法。您应该改用 Calendar 类来操纵日期。 从 API : 在JDK 1.1之前,Date类具有两个附加功能。它允许将日期解释为年,月,日,小时,分钟和秒值。它还允许格式化和解析日期字符串。不幸的是,这些

  • 一些日志记录需要在类的静态方法执行前后完成。我试图使用Spring AOP实现这一点,但它不起作用,对于普通方法来说,它是起作用的。请帮助我理解如何实现这一点,如果可以使用注释来完成,那就太好了。

  • 本文向大家介绍PHP简单创建日历的方法,包括了PHP简单创建日历的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP简单创建日历的方法。分享给大家供大家参考,具体如下: 运行结果如下图所示: 关于在线显示日期还可参考本站在线工具: 在线万年历日历 网页万年历日历 在线万年历黄历flash版 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数学