我有一个 python 类并针对它运行 pylint。它给出的一条信息是:
Warning: Method could be a function
这是否告诉我最好将此方法移出类,因为它不使用任何实例变量?
在 C# 中,我会将其设为静态方法。这里最蟒蛇的事情是什么?
如果它根本不涉及类,则将其移至函数是很常见的。
如果它操作类属性,请使用classmethod
装饰器:
@classmethod
def spam(cls, ...):
# cls is the class, you can use it to get class attributes
classmethod
and staticmethod
(与前者相同,只是该方法没有从其第一个参数中获取对类的引用)是最近才引入的。这意味着一些 Python 程序员习惯于避免使用静态和类方法。
一些铁杆 Python 程序员会告诉你,这些装饰器只会使事情复杂化;其他一些人(通常是以前的 C# 或 Java 程序员)会告诉您使用函数还不够面向对象。我认为这只是一个偏好问题。