关于自建类传递参数的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()


回答:

函数返回值哪能是多个……返回值只能有一个。

关于自建类传递参数的bug如何修改?

你这返回的已经是一个元组了。

P.S. 你可能会误以为有括号的才是元组,事实上逗号才是必须的,括号并不是。

以上是 关于自建类传递参数的bug如何修改? 的全部内容, 来源链接: utcz.com/p/938433.html

回到顶部