Python self 参数即使不使用也需要?

Python self parameter required even when not using it?


我能理解 Python 要求 self 是第一个参数,什么不是。然而,PyCharm 告诉我方法 "hello" 需要 self 作为第一个参数,但它甚至没有被使用,这让我很困惑。

举个例子:

class Example:
    def hello():
       return "hello world"

这会给我一个错误 "method must have a first parameter, usually called self"

即使 function/method 未使用它,我是否仍应将 self 作为参数包括在内,还是应该忽略此 error/warning?这是因为该方法在 class 中吗?

方法有多种,默认的是实例方法,即使不用也必须有一个self,但是如果不用self,最好将其定义为静态方法或 class 方法

class Example:
    @staticmethod
    def statichello():
        return "hello world"

    @classmethod
    def classhello(cls):
        return "hello world from " + str(cls)

    def hello(self):
        return "hello world from " + str(self)

Class 静态方法可以在有或没有实例的情况下调用:

>>> Example.statichello()
'hello world'
>>> Example().statichello()
'hello world'
>>> Example.classhello()
"hello world from <class '__main__.Example'>"
>>> Example().classhello()
"hello world from <class '__main__.Example'>"

但是必须从实例调用实例方法:

>>> Example().hello()
'hello world from <__main__.Example object at 0x000002151AF10508>'

'self'关键字在方法名中是必须的,如果你使用函数则不需要传递'self'关键字作为参数。

class Example:
    def hello():
       return "hello world"

这里的 hello() 不是一个函数,它是 class 例子的一个方法,如果你熟悉 java ,那么简而言之你可以说 'self' 关键字就像 java 中的 'this' 关键字。 当您调用 class 的任何方法时,该对象将分配给 'self' 关键字。所以你可以说 'self' 用于指示调用对象。 所以你的代码必须如下所示,

class Example:
    def hello(self):
       return "hello world"