考虑一个对象列表和一个在一个对象上工作的方法:
beers = []
beers.append(Beer('Carlsberg', 'tasty'))
beers.append(Beer('Guinness', 'bitter'))
beers.append(Beer('Leffe', 'perfect'))
def howIsBeer (name):
taste = ???
print taste
Class Beer:
def __init__ (self, name, taste):
self.name = name
self.taste = taste
如果只提供啤酒名称,howIsBeer()
方法如何获得啤酒的味道?我的第一个倾向是迭代beers
列表,但是作为Python,我怀疑有一种更直接的方法。有?
为了完整起见,我找到了一种使用Linq-like single-line statement的方法,它的优点是易于阅读:
末尾的
^{pr2}$[0]
返回第一个项,因为查询返回匹配项的列表。所以要得到整个列表:这就是为什么我喜欢Python!在
只需循环查看列表并检查每个列表。在
但是您需要稍微移动一下代码,因为
class def
需要高于类的使用范围,而且它还使用了一个小的c
。你还应该注意不被识别的情况。在你也把嘉士伯拼错了:/
不过,我会这样做(使用这里的字典可以灵活地拥有多个属性):
^{pr2}$如果你只想储存味道,你可以这样做:
如果你想要存储一系列的对象-正如你在问题中提到的那样-那么你需要一个对象字典-而不是一个作为类变量的字典。在
即
然后得到你正在看的啤酒的数据
这可以扩展到任何对象类型,我相信这正是您要寻找的
例如
在哪里
实在想不出更好的方法了,只需使用
for
-循环。在还要注意,关键字
class
是用小的c
编写的。在使用类创建实例之前,还必须先定义类。在编辑: 正如注释中所建议的,一种方法是定义字典。如果您觉得有用,可以使用下面的代码。但是,请注意,只有当您拥有大量啤酒对象且性能速度对您非常重要时,才建议使用此方法。否则使用提供的第一个代码
^{pr2}$相关问题 更多 >
编程相关推荐