缺少 1 个必需的位置参数:'y'

Far*_*han 1 python typeerror python-3.x positional-argument

我创建了一个Python类:

class calculator:
    
    def addition(self,x,y):
        added = x + y
        print(added)
        
    def subtraction(self,x,y):
        sub = x - y
        print(sub)

    def multiplication(self,x,y):
        mult = x * y
        print(mult)

    def division(self,x,y):
        div = x / y
        print(div)
Run Code Online (Sandbox Code Playgroud)

现在,当我像这样调用该函数时:

calculator.addition(2,3)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

addition() 缺少 1 个必需的位置参数:'y'

问题是什么?我可以这样称呼它的解决方案是什么addition(2,3)

小智 6

Python 的类具有三种类型的方法:

\n
    \n
  1. 实例方法
  2. \n
\n

实例方法必须将实例对象作为第一个参数传递给该方法,如下所示self

\n
class calculator:\n    \n    def addition(self, x, y):\n        added = x + y\n        print(added)\n\nc = calculator()        \nc.addition(2, 3)\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 类方法
  2. \n
\n

类方法使用classmethod装饰器,并且必须将类对象作为第一个参数传递给方法,如下所示cls

\n
class calculator:\n    \n    @classmethod\n    def addition(cls, x, y):\n        added = x + y\n        print(added)\n    \ncalculator.addition(2, 3)\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 静态方法
  2. \n
\n

静态方法\xe2\x80\x99并不重要,只需添加一个staticmethod装饰器,例如:

\n
class calculator:\n    \n    @staticmethod\n    def addition(x, y):\n        added = x + y\n        print(added)\n    \ncalculator.addition(2, 3)\n
Run Code Online (Sandbox Code Playgroud)\n

因此,如果您只想使用像calculator.addition(2, 3).

\n