gpt4 book ai didi

python - 尝试将类(在列表中)保存到文件中

转载 作者:行者123 更新时间:2023-11-30 21:56:06 25 4
gpt4 key购买 nike

我正在尝试创建一个程序,可以在游戏中存储具有某些属性的 NPC。如:派系、个性、兴趣/爱好。为了实现这一目标,我创建了一个 NPC 类。

class NPC: #name, faction, position/job, character, interests, other
def __init__ (self, name, faction, pos, char, inter, misc):
self.name = name
self.faction = faction
self.pos = pos
self.char = char
self.inter = inter
self.misc = misc

我为这个程序创建了各种功能,例如创建新功能、更改 NPC 的某些属性、删除它们、打印它们以及对它们进行排序。为了存储 NPC,我将它们附加到名为“NPClist”的列表中。我想知道如何将此列表保存到 .text 文件或其他文件中。到目前为止,我已经尝试过 pickle 模块,但似乎不起作用。 (来源:How to save a list to a file and read it as a list type?)

with open("NPCs.text", "wb") as file:
pickle.dump(NPClist, file)

with open("NPCs.text", "rb") as file:
NPClist.append(pickle.load(file))

我将底部的一个放在程序的顶部,以便在程序启动时加载它,并将顶部的一个放在循环的顶部,以便经常保存。当我尝试启动该程序时,我收到一条错误消息。

AttributeError: Can't get attribute 'NPC' on <module '__main__' (built-in)>

还有其他方法可以解决这个问题还是我只是以错误的方式做pickle?

最佳答案

如果您需要的只是属性,我建议只保存属性,而不是尝试保存整个对象,并使用 NPC 中的一些辅助方法使此过程更容易。

例如:

class NPC:

def dump(self):
return [self.name, self.faction, self.pos, self.char, self.inter, self.misc]

@staticmethod
def build_npc(attributes):
return NPC(*attributes)

然后你可以像这样处理转储:

NPClist = [NPC(...), NPC(...) ... ]

with open("NPCs.text", "wb") as file:
pickle.dump([i.dump() for i in NPClist], file)

像这样加载:

with open("NPCs.text", "rb") as file:
NPClist = [NPC.build_npc(attributes) for attributes in pickle.load(file)]

关于python - 尝试将类(在列表中)保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584882/

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