【发布时间】:2012-04-05 18:41:38
【问题描述】:
我正在开发一个基于文本的小型合成游戏,但我在创建这个Food 列表时遇到了麻烦,我想将我所有的Food(汉堡或热狗)放入listOfFood。在我的示例中,我只包括了两个,但它们都是以食物为基础的。
稍后我将遍历我的listOfFood 来做一些事情。我抽象了我的代码来提问(因为它的行太多,其他信息与它无关)。
class Food():
def __init__(self):
self.name = 'Food'
class HotDog(Food):
def __init__(self):
Food.__init__(self)
class Burger(Food):
def __init__(self):
Food.__init__(self)
def createFoodList(myOrders):
# A list that contain all the food (either Burger or Hotdog)
listOfFood = []
# Depend what is the type of the food, create that many food object
# and then append it to the list of food
if myOrders[0][0] == 'HotDog':
for number in myOrder[0][1]:
listOfFood.append(HotDot())
if myOrders[0][1] == 'Burger':
for number in myOrder[0][1]:
listOfFood.append(Burger())
return listOfFood
todayOrders = [['HotDog', 10], ['Burger', 5]]
print(createFoodList(todayOrders))
我想知道我是否可以使用列表理解或类似方法来使我的createFoodList 功能更好?因为我的想法是有许多不同种类的Food,所以如果我可以返回这个食物列表,基于todayOrders 列表['type of food', count] 并返回[food, food, food.. ]。我现在做的方式真的很复杂很长(我感觉这不是正确的方式)。
非常感谢。
编辑: 除了列表理解之外,我还能做些什么来替换 createFoodList 中的 if 语句?这是在[[food, count], [food, count]..] 上决定的,我创建了该食物并将其附加到我的列表中。
【问题讨论】:
-
顺便说一句,为什么要为每个订单创建一个
Food实例?据我所知,你们所有的汉堡包都是一样的。如果确实如此,您可以创建一个实例并重复使用它。