PyCharm给了我一个提示this method may be static
。嗯,我知道。但是我应该吗?
在C ++中,我只会在有充分理由的情况下定义静态方法,主要是希望不使用任何实例的方法,或者为所有实例(如计数器)使用公共数据。 Python中的情况是什么?
我发现答案说它可以节省内存,但我不认为它的数量会影响编码风格。
答案 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
。