Python 获取父级 class

Python get parent class

我有一个迷宫 class,我有一个 MazeTilePlacer (MTP) class。 MTP class 实例将在迷宫 class 内创建,并且需要访问迷宫 class 中名为 emptytiles 的变量,定义为 self.emptytiles = []。如何从 MTP 实例访问父对象来访问这个变量?

您可以通过为 MazeTilePlacer 的每个实例提供对与您的 Maze 对象相同的 emptytiles 列表的引用来处理此问题。 Maze 对象然后可以将放置图块的责任委托给其他对象。

class Maze:
    def __init__(self):
        self.emptytiles = []

    def place_tiles(self):
        placer = MazeTilePlacer(emptytiles=self.emptytiles)
        placer.do_placements()


class MazeTilePlacer:
    def __init__(self, emptytiles):
        self.emptytiles = emptytiles

    def do_placements(self):
        self.emptytiles.append('Another tile my Sir')


maze = Maze()
maze.place_tiles()
print(maze.emptytiles)

如果你想有多个方块放置器,你可以为它们都提供相同的空方块参考。如果您需要这些并行 运行 并以线程安全的方式操作 emptytiles 结构(即您需要多次访问而无需任何人更改您下面的结构 - 例如 pop,做一些事情,然后不添加任何东西被弹出或附加在两者之间)你必须把它锁起来。