如果方法不使用 self 怎么办?

What if a method doesn't use self?

在 PyCharm 中,每当您声明一个不使用 self 变量的方法时,它都会给您警告

Method 'method_name' may be 'static'

我已经多次遇到这个警告,但大多数时候我只是忽略它。但是,我想知道是否有传统的或 pythonic 的方式来处理它。

所以基本上,我的问题是遇到这种情况时我该怎么办?我应该忽略它吗?我应该用静态方法替换它吗(@staticmethod)?

提示该方法可以是静态方法,因为它不作用于实例(即,您传入 self 但实际上并未使用它)。

没有常规的方法来处理它——要么你想要那个方法在那里,因为你正在创建一个 class 树并希望它在后代中是 defined/overridden;或出于任何其他原因。在这种情况下,您可以忽略该警告。

这与@staticmethod完全不同;这有很多其他后果。所以这不是 "if I'm not using self, but passing it in, lets just make it a static method" 的问题;你必须知道这个方法在做什么。

静态和 class 方法最常用于工厂 classes。