如何处理pylint消息:警告:方法可以是函数

74 投票
1 回答
52277 浏览
提问于 2025-04-15 21:49

我有一个Python类,运行了pylint这个工具来检查代码。它给了我一个提示:

Warning: Method could be a function

这个提示是在告诉我,是否应该把这个方法移出类,因为它没有使用任何实例变量?

在C#中,我会把这个方法设为静态方法。那么在Python中,最合适的做法是什么呢?

1 个回答

86

把它放到一个函数里是很常见的做法,前提是这个函数完全不涉及到类的内容。

如果这个函数需要操作类里面的属性,那就要用 classmethod 装饰器:

@classmethod
def spam(cls, ...):
   # cls is the class, you can use it to get class attributes

classmethodstaticmethod(它和前者差不多,只是这个方法不会从第一个参数获取类的引用)是最近才引入的。这意味着一些Python程序员习惯于避免使用静态方法和类方法。

一些资深的Python程序员可能会告诉你,这些装饰器只会让事情变得复杂;而另一些人(通常是以前用C#或Java的程序员)则会说,使用函数不够面向对象。我觉得这只是个人喜好的问题。

撰写回答