【问题标题】:is there an advantage in defining a method as static whenever possible in Python?在 Python 中尽可能将方法定义为静态方法是否有优势?
【发布时间】:2017-10-24 15:34:07
【问题描述】:

PyCharm 给了我一个提示this method may be static。嗯,我知道。但我应该吗?

在 C++ 中,只有当我有充分的理由时,我才会定义一个静态方法,主要是希望不与任何实例一起使用该方法,或者对所有实例都有一个公共数据,例如计数器。 Python中的情况是什么?

我找到的答案说它可以节省内存,但我认为数量不会影响编码风格。

【问题讨论】:

    标签: python coding-style static-methods


    【解决方案1】:

    如果一个方法不与self 交互,我会使用@staticmethod。尤其是对于公共 API,如果一个方法可能不是静态的,这会让人感到困惑。

    例如:

    class File(object):
        BUFFERSIZE = 65536
    
        def __init__(self, path):
            self.path = path
            self.descriptor = None
    
        @staticmethod
        def get_buffersize():
            return File.BUFFERSIZE
    
        def open(self, mode):
            self.descriptor = open(self.path, mode)
    
        def close(self):
            self.descriptor.close()
    

    显然是一个愚蠢的课程,但希望你明白了。事实上,在现实世界的应用程序中,我会将get_buffersize 设为Filebuffersize 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2022-10-23
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      相关资源
      最近更新 更多