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

时间:2017-10-24 15:34:07

标签: python coding-style static-methods

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

在C ++中,我只会在有充分理由的情况下定义静态方法,主要是希望不使用任何实例的方法,或者为所有实例(如计数器)使用公共数据。 Python中的情况是什么?

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

1 个答案:

答案 0 :(得分:2)

如果某个方法未与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 buffersize属性为File