【发布时间】:2018-06-18 17:14:09
【问题描述】:
这是一个包含重现我的错误的代码的 sn-p。为什么 sum 函数将类实例而不是数字传递给减法?
class my_class():
def __init__(self):
pass
def __subtract (x,y, n=1):
return (x - y)**n
def num_generator(self, num):
example_list = []
for idx in range(num):
example_list += [idx]
expression = {y: sum(self.__subtract(x, y) for x in example_list) for y in range(min(example_list), max(example_list) + 1)}
no_vals = max(expression.items(), key=operator.itemgetter(1))[0]
return no_vals
chosen_no = 20
class_instance = my_class()
class_instance.num_generator(chosen_no)
错误:
TypeError: unsupported operand type(s) for -: 'my_class' and 'int'
我已经盯着这个看了 20 分钟,对我来说这毫无意义。
【问题讨论】:
-
将您的
__subtract方法设为静态或添加self
标签: python python-3.x oop runtime-error