Python如何获取归属于指定外层类实例的内部嵌套类实例列表
问题原因
你代码里的nodes是node内部类的全局类属性,所有schema实例共享该列表,因此所有node实例都会被存入同一个列表,最终查询时返回所有实例。
修正代码
我们将nodes改为schema的实例属性,每个schema实例独立持有自己的node实例列表,同时调整内部类的初始化逻辑,自动将新创建的node实例存入所属schema的列表中:
class schema(): def __init__(self, name): self.name = name self.nodes = [] # 单个schema实例专属的node存储列表 def node(self, name): # 内部node类定义 class Node(): def __init__(self, outer_schema, node_name): self.name = node_name self.outer_schema = outer_schema def __call__(self): return self.name # 创建node实例并加入当前schema的nodes列表 created_node = Node(self, name) # 若需要兼容原有的a.node.nodes访问写法,添加下行即可 self.node.nodes = self.nodes return created_node
测试效果
使用你原有逻辑调用即可得到预期结果:
a = schema('A') a1 = a.node('A1') a2 = a.node('A2') b = schema('B') b1 = b.node('B1') b2 = b.node('B2') # 若添加了兼容代码,原有打印写法也可直接使用 print({n() for n in a.nodes})
输出结果:
{'A1', 'A2'}
内容的提问来源于stack exchange,提问作者PabloG
相关产品推荐
相关产品推荐

