如何解决Python:在类内调用方法给出“不支持的操作数类型”错误
我试图在我的 Calculator 类中调用 sum 函数,但它给了我以下错误:unsupported operand type(s) for +: 'int' and 'Calculator'.
但是,如果我要在类之外使用该函数并调用它,则它可以正常工作。非常感谢任何帮助。
#解决方案
class Calculator(object):
def __init__(self,*args):
self.args = args
def sum(*args): //Change to self
result = 0
for arg in args://Change to self.args
result = result + arg
return result
t = Calculator(3,4,5)
t.sum()
*跟进问题;添加其余的运算符(/,,-) 对于乘法,我基本上可以使用相同的语法
def mul(self):
result = 1
for arg in self.args:
result = result * arg
return result
问题发生在除法和减法上。当函数必须考虑参数的位置时。
def subtract(self):
result = 0
for arg in self.args:
result = arg - result
return result
t = Calculator(3,4).
t.subtract()
# output
1 (4 -3)
# wanted output
-1 (3-4)
同样适用于除法,其中 Calculator(x,y) 给出 (y/x)。
解决方法
您忘记了方法中的 self
参数。
class Calculator:
def __init__(self,*args):
self.args = args
def sum(self):
return sum(self.args)
请注意,如果您使用的是 Python 3,则不必对 object
类进行子类化。sum(self.args)
是您可以进行的另一个简化。
对后续问题的回答
您可以使用 operator
模块。
from functools import reduce
import operator
class Calculator:
def __init__(self,*args):
self.args = args
def subtract(self):
return reduce(operator.sub,self.args[1:],self.args[0])
def divide(self):
return reduce(operator.truediv,self.args[0])
print(Calculator(3,4).subtract()) # -1
print(Calculator(3).subtract()) # 3
print(Calculator(3,4,5).subtract()) # -6
print(Calculator(3,4).divide()) # 0.75
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。