如何处理pylint消息:警告:方法可以是函数
我有一个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
classmethod
和 staticmethod
(它和前者差不多,只是这个方法不会从第一个参数获取类的引用)是最近才引入的。这意味着一些Python程序员习惯于避免使用静态方法和类方法。
一些资深的Python程序员可能会告诉你,这些装饰器只会让事情变得复杂;而另一些人(通常是以前用C#或Java的程序员)则会说,使用函数不够面向对象。我觉得这只是个人喜好的问题。