在 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
.
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
.