Python递归对象创建

问题描述 投票:1回答:1

我正在尝试优化迷宫生成算法。目前,我有一个节点集列表和一个节点本身列表。节点存储为(x,y)元组。在开始时,每个集合仅包含一个节点。我在两个节点之间选择一个随机边界,并检查它们是否在同一集合中。这就是问题所在-我必须遍历集合列表并查看每个项目,直到找到包含给定节点的集合为止。我希望能够将集合作为Node类的属性来访问,但是我也希望集合包含“ Node”类的对象,并且我遇到了这个问题:

class Node:

   def __init__(self, xy:tuple, group:set):
       self.xy = xy
       self.group = group

node = Node((10, 10),{Node(10, 10),{Node(10, 10),{... and so on }}})

如何创建这样的关系,以便我可以访问node.group的集合,同时group属性将指向其他Node对象所需的集合而无需递归?

python algorithm class graph-algorithm
1个回答
0
投票

这是您想要的吗?

class Node:

    def __init__(self, xy:tuple):
        self.xy = xy
        self.group = None

    def set_group(self, group:set):
        if  self.group is not None:
            self.group.remove(self)
        group.add(self)
        self.group = group

node1 = Node((1,1))
node2 = Node((2,2))

group1 = set()
group2 = set()

node1.set_group(group1)
node2.set_group(group2)
© www.soinside.com 2019 - 2024. All rights reserved.