您好,我有使用Python中pygame的取得了棋局。
要做到这一点,我已经做了“棋局”类我也做的对象。现在我想救场,所以我们可以在以后下棋。
我知道,可以用泡菜(或其他模块,如JSON和HDF5)保存我的游戏。我知道泡菜只能让我保存对象,如果我给他们的变量dictionnaries参数的方法和pickle.dump。
问题是:如何保存Python对象其属性也是对象和多层次?
为了解释自己:我已经作出,其attributs包含其它对象我的“国际象棋”类的对象。
对于为例,“板”是国际象棋的attribut,是我的“董事会”类的一个对象,并且主板还包含对象,其中之一是所有的作品(它在列表中有一个列表所作的矩阵)组成的栅格每个网格的元件的是我的“片”的类的对象“片”。
那么,有没有一个简单的方法来拯救我的所有的游戏attributs而无需分解每个对象,以得到他们的dictionnaries?如果是的话,有可能保存包含其他对象多次,我想的对象?
非常感谢你提前! :d
我相信pickle
模块可实际上正确序列化你的对象,根据你所描述的对象层次:
In [1]: import pickle
In [2]: class Piece():
...: def __init__(self, name):
...: self.name = name
...:
In [3]: class Board():
...: def __init__(self, pieces):
...: self.pieces = pieces
...:
In [4]: board = Board([Piece("knight"), Piece("king")])
In [5]: save = pickle.dumps(board)
In [6]: restored_board = pickle.loads(save)
In [7]: for piece in restored_board.pieces:
...: print(piece.name)
...:
knight
king