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

为何自定义UserDict类实例未按__init__方法更新,输出为空字典?

问题原因解析

问题出在__init__方法里的self = {}这一行:

  • 在Python类方法中,self是指向当前实例的局部变量。你在这里把self重新赋值成新的空字典,只是改变了这个局部变量的指向,完全没影响到原本创建的UserDict实例(也就是外部的ud)。
  • 后续的self.update(dict)操作的是你新创建的局部字典,而非类的实例本身。当__init__方法执行完毕,这个局部字典会被销毁,原本的UserDict实例自始至终都没被修改过,所以最后打印ud时输出空字典。

如果要达到预期效果,只需去掉self = {}这一行,直接操作原实例即可:

class UserDict(dict):
    def __init__(self, dict=None):
        if dict is not None:
            self.update(dict)

if __name__ == '__main__':
    myd = {'key1':'value1', 'apple':'fruit', 'tomato':'vegetable'}
    ud = UserDict(dict=myd)
    print(ud)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:54:26