PyCharm 警告我为类方法函数创建的类方法创建一个对象

PyCharm warns me to create an object for a classmethod made by classmethod function

根据Python docs

If a class method is called for a derived class, the derived class object is passed as the implied first argument.

因此我们可以得出结论,我们不需要使用 class 方法函数来创建对象。但是我不知道为什么 PyCharm 给我这个警告,而它执行代码完全没有问题。

这是代码:

class Fruit:
    def sayhi(self):
        print("Hi, I'm a fruit")


Fruit.sayhi = classmethod(Fruit.sayhi)
Fruit.sayhi()enter code here

这是警告

Parameter self unfilled

当 PyCharm 给出这些警告时,它通过查看 class 定义来确定 sayhi 函数的工作方式。根据您的 class 定义,sayhi 需要一个您尚未填写的参数 self。在第 6 行,您已将 sayhi 重新分配为 class 方法,但是,就 PyCharm 而言,这在 class 定义之外,因此它是“任何事情都会发生”的领域,它不会费心尝试根据代码的作用做出假设。如果你想让 PyCharm 知道 sayhi 是一个 class 方法,你应该在 class 定义中指定它。例如,通过使用 class 方法作为装饰器

class Fruit:
    @classmethod
    def sayhi(self):
        print("Hi, im a fruit")
        
        
Fruit.sayhi()

没有警告!