gpt4 book ai didi

python - OOP 和 Python 的新手 -- 关于存储大量对象的问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:59 24 4
gpt4 key购买 nike

我刚刚开始使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com