【问题标题】: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 设为File 的buffersize 属性。