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

Python实例化带字典字段的对象后打印该字段为空问题求助

问题排查与修复

问题根因

Node类的初始化逻辑存在错误:你在定义__init__方法时已经将gatewayIds设为入参,但给实例属性赋值时直接写死了self.gatewayIds={},没有将传入的参数值绑定到实例属性上,所以所有实例的gatewayIds字段最终都是空字典。

修复方案

将Node类__init__方法中的self.gatewayIds={}替换为self.gatewayIds = gatewayIds即可。

修正后完整代码

class Node():
    def __init__(self,id, gatewayIds):
        self.id=id
        # 改为接收传入的gatewayIds参数
        self.gatewayIds = gatewayIds
class LevelNNode(Node):
    def __init__(self, id, gatewayIds):
        super(LevelNNode,self).__init__(id, gatewayIds)
        self.balance=0
totalLevels=2
Dn = 10 
Gn = 2  
NODES = []
GATEWAYIDS = [chr(x+97) for x in range(Gn)]
if totalLevels==2:
    for i in GATEWAYIDS: # 创建所有网关
        otherGatewayIds = GATEWAYIDS.copy()
        otherGatewayIds.remove(i)
        NODES.append(LevelNNode(i, {1:i}))
    deviceNodeId = 1  # 创建下层节点
    for i in GATEWAYIDS:
        for j in range(Dn):
            NODES.append(Node(deviceNodeId, {1:i, 2:deviceNodeId}))
            deviceNodeId += 1

for x in NODES:
    print (x.id, x.gatewayIds)

效果说明

修改后运行代码,输出会符合你预期的格式:网关实例的gatewayIds为{1: 'a'}、{1: 'b'},下层节点的gatewayIds为{1: 'a', 2: 1}、{1: 'a', 2: 2}这类对应结构。

内容的提问来源于stack exchange,提问作者Riham ELSAADANY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:12:01