我刚刚开始使用 Python 和编程,我有一个关于存储许多对象的一般性问题。
到目前为止,我对对象的理解是:我可以这样定义一个对象:
class Meal:
并且在它上面有一些函数,这样我就可以找到它,例如 Meal.drink 返回“soda”而 Meal.main 返回“pizza”。到目前为止,还不错。
但是,在存储大量对象时,我不确定我做的是否正确。现在,我将它们全部保存在一个列表中,这样每次我想记录一顿新饭菜时,我都会这样做:
temp = Meal()
listOfMeals.append(temp)
如果我想知道我在所有记录的膳食中喝了多少次苏打水,我遍历列表并计数:
for each in listOfMeals
if each.drink == 'soda':
sodaCount = sodaCount + 1
这是处理长对象列表的最佳方式吗?我觉得有点笨拙,但由于我没有面向对象编程的经验(一般来说编程经验很少),我不确定我是否忽略了一些明显的东西。
感谢您的帮助。
最佳答案
这取决于你要做什么。 每一段代码都可以更高效地编写,但您首先应该问自己的问题是:为什么这段代码必须更快?
如果没有理由使该方法更快(因为计数用得不多,反正饭菜列表只有一百个条目,等等),您应该使用一些简单的方法,例如
sodacount = sum(1 for meal in listOfMeals if meal.drink=='soda')
另一方面,如果您经常需要计数,您可以将用餐列表包装在另一个存储和更新计数的对象中:
class MealList(object):
# insert __init__, etc.
def addMeal(self, meal):
self._meals.append(meal)
# update the count
self.counts[meal.drink] += 1
# insert method to remove meals
meals = MealList()
# add meals etc ....
print meals.counts['soda']
关于python - OOP 和 Python 的新手 -- 关于存储大量对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296831/