关于自建类传递参数的bug如何修改?
在看Python贪婪算法的范例时,发现代码中使用Thing(*input_thing())不断实例化Thing类,这里想问一下,为什么这里实例化Thing类传递的参数要加星号啊?
在网上搜到星号的功能是“用来接受任意多个参数并将其放在一个元组中”。但是Thing类实例化的时候是接收三个参数,input_thing()函数返回的也是三个参数,不是应该直接Thing(input_thing())就可以吗?为什么还要用星号将其转化为一个元祖再传递给Thing类啊?
新手学习,可能大佬看起来问题比较傻,但是真的是想不明白了,麻烦各位大佬不吝赐教,谢谢。
以下是完整代码:
class Thing(object): def __init__(self,name,price,weight):
self.name = name
self.price = price
self.weight = weight
@property
def value(self):
return self.price / self.weight
def input_thing():
name_str,price_str,weight_str = input().split()
return name_str,int(price_str),int(weight_str)
def main():
max_weight,num_of_things = map(int,input().split())
all_things = []
for _ in range(num_of_things):
all_things.append(Thing(*input_thing()))
total_weight = 0
total_price = 0
all_things.sort(key = lambda x:x.value,reverse=True)
for thing in all_things:
if total_weight + thing.weight <= max_weight:
print('小偷偷走了%s'%(thing.name))
total_weight += thing.weight
total_price += thing.price
print('总价值:%s美元'%(total_price))
return
if __name__ == "__main__":
main()
回答:
函数返回值哪能是多个……返回值只能有一个。
你这返回的已经是一个元组了。
P.S. 你可能会误以为有括号的才是元组,事实上逗号才是必须的,括号并不是。
以上是 关于自建类传递参数的bug如何修改? 的全部内容, 来源链接: utcz.com/p/938433.html