我最近开始使用 PyCharm,它告诉我何时我的方法之一可以是静态的(只要我不使用任何成员)。
我想知道尽可能使方法静态化是否是一种好习惯。我知道这在其他(编译)语言中是一个坏习惯,但感觉对于 Python 来说它实际上会更轻松。通常,PyCharm 建议的此类更正由 PEP 编号支持,但没有此编号。
TL;DR 即使我不需要静态使用它们,我是否应该将我的方法声明为静态?
我最近开始使用 PyCharm,它告诉我何时我的方法之一可以是静态的(只要我不使用任何成员)。
我想知道尽可能使方法静态化是否是一种好习惯。我知道这在其他(编译)语言中是一个坏习惯,但感觉对于 Python 来说它实际上会更轻松。通常,PyCharm 建议的此类更正由 PEP 编号支持,但没有此编号。
TL;DR 即使我不需要静态使用它们,我是否应该将我的方法声明为静态?
一个方法,一个类的函数属性,如果它不可能使用第一个参数,一个类的实例,它可以被声明为静态的。使用未使用的参数/错误定义函数通常是一个坏主意。如果缺少使用是一个错误,因为应该使用参数,那么应该修复它。如果缺少使用不是错误,那么(通常),应该从标题中删除参数。
PyCharm 还应该建议,如果不使用不是错误,则从类中删除函数并从定义中删除未使用的 self 参数,以便可以在不需要不相关的类实例的情况下调用它。Python 不是 Java。Python 使用模块而不是类作为默认函数容器。例子:
def C:
def fmeth(self, x):
def ffunc(x):
return x * 3 + 2
print(C().fmeth(0), ffunc(0)
除非在某些特殊情况下,要求通过 C 实例访问该函数没有任何好处。
Python 标准库几乎不使用staticmethod()
. 除了测试,大概只有20个左右的用途,我查的可以看成特例。Guido van Rossum 曾表示,添加staticmethod
withclassmethod
是有问题的,不应过多使用。