Python调用类方法报TypeError: unbound method list.copy()需参数问题咨询
问题解决方案
核心错误原因
你报错的根本原因是调用listeEntfernen方法时,第二个参数的语法写错了:
你当前写的是list[x],本意是要把itertools.combinations返回的元组x转换为列表,但方括号[]在Python中是索引/切片操作符,这里的写法相当于对Python内置的list类执行索引操作,根本没有生成新列表。
传入listeEntfernen方法的liste2参数根本不是列表实例,你后续调用liste2.copy()时,实际调用的是list类的未绑定copy方法,才会抛出unbound method list.copy() needs an argument的错误,和self关键字、类调用逻辑没有任何关系。
修复方法
直接把liste_links = self.listeEntfernen(self.gewichte, list[x])中的方括号改为圆括号即可,修改后的代码为:
liste_links = self.listeEntfernen(self.gewichte, list(x))
补充优化建议
你的代码中还有一处潜在逻辑问题:
代码中if (sum(x) - ziel) in liste_links:分支里,你给erg_links赋值的是数值sum(x) - ziel,但其他分支里erg_links赋值的是元组y,两者类型不一致,后续处理erg_links时大概率会出现类型报错,建议统一类型,比如把数值也包装成单元素元组:
erg_links = (sum(x) - ziel,)
内容的提问来源于stack exchange,提问作者Daniel P
相关产品推荐
相关产品推荐

