使用对象中的文件

时间:2015-07-06 10:27:18

标签: python file oop

我有一个设计问题。我正在使用python(2.7)进行练习,这是一个带迷宫的简单游戏。我需要在游戏的每一步都读取特定文件的写入。

目前我有2个班级(游戏和迷宫)。 Labyrinth类负责读取和写入文件。

我的问题是,可以在Labyrinth的 init 函数中打开文件,并在游戏结束时在另一个函数(可以从另一个类调用)中关闭它吗?或者每次打开和关闭文件更好?

我没有将文件内容保存到readlines()的字符串中的原因是因为我应该在游戏的每一步保存到文件中。

2 个答案:

答案 0 :(得分:2)

虽然您可以这样做,但通常建议您使用with打开文件,因为无论发生什么情况,都会通过关闭文件来处理错误。您只需传递参考文件,即可将其传递给迷宫init

with open(file) as f:
    labyrinth = Labyrinth(f)

然后,如果发生任何错误,文件仍然安全关闭,您还可以将打开的文件传递给Labyrinth对象。

答案 1 :(得分:1)

您正处于设计阶段。 因此,您必须权衡由于某些错误导致数据丢失的可能性,或者与数据的重要性以及“保护数据”的成本相关的损失。它

使用with可以保护您免受某些错误的影响。如果你认为python本身可能崩溃(例如),那么你仍然有一些风险。每一步后保存显然更安全。它的用途有多大取决于保存数据的数量(还有减少这种技术的技术),每次保存对性能的影响以及这种崩溃的可能性。

没有任何进一步的信息,只是猜测,我对你的具体问题的答案:

  

...可以在init的{​​{1}}函数中打开文件   在比赛结束时关闭它......?或者打开和关闭更好   每次都有文件?

我会在每一步后保存