在 Python 中尽可能将方法定义为静态是否有优势?

is there an advantage in defining a method as static whenever possible in Python?

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

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

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

如果某个方法不与 self 交互,我会创建它 @staticmethod。特别是对于 public 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()

显然是个愚蠢的人 class 但希望您明白了。事实上,在现实世界的应用程序中,我会将 get_buffersize 设为 buffersize 属性 of File.