You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 09:54:08