python如何使此代码更具python风格?

python如何使此代码更具python风格?,python,Python,所以我从麻省理工学院的“计算机科学与编程导论”课程18中得到了这段代码。代码很少遵循python风格。看看这个 class Item(object): def __init__(self, n, v, w): self.name = n self.value = float(v) self.weight = float(w) def getName(self): return self.name def getValue(self): return

所以我从麻省理工学院的“计算机科学与编程导论”课程18中得到了这段代码。代码很少遵循python风格。看看这个

class Item(object):

def __init__(self, n, v, w):
    self.name = n
    self.value = float(v)
    self.weight = float(w)

def getName(self):
    return self.name

def getValue(self):
    return self.value

def getWeight(self):
    return self.weight

def __str__(self):
    result = '<' + self.name + ', ' + str(self.value) + ', '\
             + str(self.weight) + '>'
    return result



def buildItems():
    names = ['clock', 'painting', 'radio', 'vase', 'book',
             'computer']
    vals = [175,90,20,50,10,200]
    weights = [10,9,4,2,1,20]
    Items = []
    #for i in range(len(vals)):
    #    Items.append(Item(names[i], vals[i], weights[i]))

    return Items
还有别的办法吗

编辑:

也许吧

[编辑]不幸的是,经过考虑后,第一个示例将不起作用,因为它将所有3个参数作为一个元组传递,而不解包。。。您可能必须更改Item的init函数以接受元组或使用lambda

Items = list(map(lambda a:Item(*a),zip(names,vals,weights)))
这甚至更短:

Items = [Item(name,value,weight) for name,value,weight in zip(names,vals,weights)]

如果代码有效,这可能属于CodeReview.SE。我投票结束这个问题,因为它似乎是关于代码审查的。你从哪里得到的代码?在麻省理工学院的《计算机科学入门》中添加一个链接或修改你的参考资料(添加年份),如第18篇。。。没有包含这样的代码,目前的问题在代码审查中不会很顺利。问题的标题和主体没有解释代码的作用,也没有解释代码是否正确工作。如果代码是有效的,并且重新编写问题时考虑到了这一点,那么在代码审查时就可以了。加一:)我喜欢第一个。谢谢你,嗯,事实上,我不认为第一个真的会起作用。。。因为它没有解压参数。。。当当对不起…哦,太美了。
Items = [Item(*vals) for vals in zip(names,vals,weights)]
Items = list(map(lambda a:Item(*a),zip(names,vals,weights)))
Items = [Item(name,value,weight) for name,value,weight in zip(names,vals,weights)]