python - PyCharm 警告我为由 classmethod 函数创建的 classmethod 创建对象

标签 python object pycharm self class-method

根据Python docs :

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

因此我们可以得出结论,我们不需要使用类方法 function 创建对象。但我不知道为什么 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

Parameter self unfilled !

最佳答案

当 PyCharm 向您发出这些警告时,它会通过查看类定义来确定 sayhi 函数的工作方式。根据您的类定义,sayhi 需要一个您尚未填充的参数 self。在第 6 行,您已将 sayhi 重新分配为类方法,但是,就 PyCharm 而言,这是在类定义之外,因此它是“一切皆有可能”的领域,并且不会费心尝试根据该代码的作用做出假设。如果您希望 PyCharm 知道 sayhi 是一个类方法,您应该在类定义中指定它。例如,使用classmethod作为装饰器

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

enter image description here

没有警告!

关于python - PyCharm 警告我为由 classmethod 函数创建的 classmethod 创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890089/

相关文章:

android - getParcelableExtra 在 Pending Intent 上总是 null,但不是 Intent

php - 我的对象包含自身的多个实例,我应该担心吗?

python - Pycharm Python 控制台回归输出未对齐

python - 尝试使其在 Django 上运行 Regex/url/views

python - 从命令行导入 Python 模块,但不能从 PyCharm 导入

python - 合并 csv 中学生编号重复的所有列中的特定列数据

python - 如何计算两幅图像之间的协方差?

python - 如何对列表的每个元素执行操作并将结果放入 Python 的新列表中?

python - Flask 服务器不会在 Windows 中按 Ctrl+C 停止

JavaScript:对象的过滤器()