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()
没有警告!
根据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()
没有警告!