我遇到此错误:
Traceback (most recent call last):
File "C:/Users/mali03/Desktop/Python/Practice/p2.py", line 18, in <module>
first.subtraction(1, 2)
TypeError: subtraction() missing 1 required positional argument: 'y'
这是我的计算器课
class calculator:
def __init__(self, x, y):
self.x = x
self.y = y
def addition(self, x, y):
return self.x + self.y
def subtraction(self, x, y):
if self.x > self.y:
return self.y - self.x
else:
return self.x - self.y
然后我用以下方法调用减法:
first = calculator
first.subtraction(1, 2)
答案 0 :(得分:2)
或者,您可以执行以下操作:
class calculator():
def addition(self, x, y):
return x + y
def subtraction(self, x, y):
if x > y:
return y - x
else:
return x - y
first = calculator()
print(first.subtraction(1, 2))
也不能完全确定x> y:是您的意图还是x
答案 1 :(得分:1)
您无需在x
或y
中指定subtraction
和addition
:
class calculator:
def __init__(self, x, y):
self.x = x
self.y = y
def addition(self):
return self.x + self.y
def subtraction(self):
if self.x > self.y:
return self.y - self.x
else:
return self.x - self.y
self
将为您检索x
和y
,因为您正在引用这些实例变量。否则,您需要在通话时指定它们:
# Yields 2-1 rather than 4-3
result = calculator(1,2).subtraction(3,4)
但是,您确实需要在实例化类时指定它们
myinst = calculator(1,2)
答案 2 :(得分:1)
如前所述,如果您已经在 __ init __ 加法或减法中包含参数。 >功能。
像这样:
class calculator:
def __init__(self, x, y):
self.x = x
self.y = y
def addition(self):
return self.x + self.y
def subtraction(self):
if self.x > self.y:
return self.y - self.x
else:
return self.x - self.y
first = calculator
print(first(5,10).addition())
或者,如果您要做要在添加和中包含 x 和 y 个参数减法功能,您可以这样调整代码:
class calculator:
def addition(self, x, y):
return x + y
def subtraction(self, x, y):
if x > y:
return y - x
else:
return x - y
first = calculator
print(first().addition(5, 10))
使用单个函数的参数代替提供给类对象的参数。
无论哪种方法,都取决于您要如何使用该类。
答案 3 :(得分:0)
问题在于此时创建对象:
first = calculator
这里您不是要创建“计算器”对象,而是要在“第一个”变量中复制计算器类。 如果您有一个类而不是一个对象,则不能直接调用其方法,但应将“ self”自变量添加为该类的实例。
要解决此问题,必须在类后添加带有两个参数“ x”和“ y”的方括号来创建对象的实例...
first = calculator(5, 4) # These numbers are only an example, change them as you wish
答案 4 :(得分:0)
first = calculator
使first
引用该类。但是first = calculator(1, 2)
使first
成为类calculator
的对象。这会为self
上调用的所有其他函数初始化first
。这也设置了self.x
和self.y
的值,因为__init__
在对象创建后即被调用。因此,当使用first = calculator(x, y)
时,self
与self.x
和self.y
一起具有值,并且当不使用括号时,它们没有值。这会导致缺少参数错误。
接下来,正如其他人已经提到的那样,一旦调用__init__
,就会为该对象初始化x和y。因此,在声明其他功能时不需要它们。 self.x
和self.y
可以在那里直接使用,在这种情况下,现在分别指1和2。
希望有帮助。