【问题标题】:What if a method doesn't use self?如果一个方法不使用 self 怎么办?
【发布时间】:2016-04-13 05:26:56
【问题描述】:

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

方法“method_name”可能是“静态”

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

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

【问题讨论】:

  • 你的方法是classmethodstaticmethod还是instance method
  • @user3100115 这是一个实例方法,因此将 self 传递给它。
  • @user3100115 我很清楚self 的实际作用。我想知道如果它在实例方法中但实际上并没有被使用该怎么办。我应该忽略它还是将该方法设为静态方法。这真的是一个问题,在这种情况下,传统的做法是什么。
  • 实例方法一般将实例本身称为self。如果您省略 self,PyCharm 会通知您,以便您可以添加 self(以匹配约定)或 @staticmethod(使其不再是实例方法)。如果您“多次”看到并忽略了此警告,那么您编写的 Python 代码对于下一位读者来说将更加难以理解。

标签: python python-3.x methods pycharm self


【解决方案1】:

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

没有传统的方法来处理它 - 要么您希望该方法存在,因为您正在创建一个类树并希望在后代中定义/覆盖它;或出于任何其他原因。在这种情况下,您可以忽略警告。

这与@staticmethod 完全不同;这会带来很多其他后果。因此,这不是“如果我不使用 self,而是将其传入,就让它成为一个静态方法”的问题;您必须知道该方法在做什么。

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

【讨论】:

  • 谢谢。看来你是唯一真正理解这个问题的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 1970-01-01
相关资源
最近更新 更多