小编CGP*_*rey的帖子

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

我刚刚开始使用Python和编程,我有一个关于存储许多对象的一般问题.

到目前为止,我对对象的理解是:我可以定义一个对象:

class Meal:
Run Code Online (Sandbox Code Playgroud)

并且有功能,以便我可以找到它,例如Meal.drink返回'soda'和Meal.main返回'pizza'.到现在为止还挺好.

但是,我不确定在存储大量对象时我做的是正确的.现在,我将它们全部保存在列表中,这样每次我想记录一顿新餐时我都会这样做:

temp = Meal()

listOfMeals.append(temp)
Run Code Online (Sandbox Code Playgroud)

如果我想知道我在所有记录的食物中有多少次苏打水,我会在列表中重复并计算:

for each in listOfMeals

    if each.drink == 'soda':

        sodaCount = sodaCount + 1
Run Code Online (Sandbox Code Playgroud)

这是处理长对象列表的最佳方法吗?对我来说感觉有点笨拙,但由于我没有面向对象编程的经验(一般的编程经验很少),我不确定我是否忽略了一些明显的东西.

感谢您的任何帮助.

python oop

3
推荐指数
1
解决办法
174
查看次数

新的Python(编程)和数据存储

我有一个关于数据存储的问题.我有一个程序正在创建一个对象列表.将这些存储在文件中的最佳方法是什么,以便程序可以在以后重新加载它们?我曾尝试使用Pickle,但我想我可能正在走错路,当我尝试回读数据时,我不断收到此错误:

    Traceback (most recent call last):
     File "test.py", line 110, in <module>
knowledge = pickle.load(open("data.txt"))
    File "/sw/lib/python3.1/pickle.py", line 1356, in load
 encoding=encoding, errors=errors).load()
File "/sw/lib/python3.1/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
  UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

编辑添加:这里是我正在尝试的一些代码:

FILE = open("data.txt", "rb")

knowledge = pickle.load(open("data.txt"))

FILE = open("data.txt", 'wb')

pickle.dump(knowledge, FILE)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
2099
查看次数

标签 统计

python ×2

oop ×1

python-3.x ×1