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

如何在字典内部引用自身的项?Python代码AttributeError报错求助

解决AttributeError: 'Dialog' object has no attribute 'geometry'问题

你遇到的这个错误原因很明确:当你在构建geometry字典的时候,试图通过self.geometry['width']去访问width值,但这时候self.geometry还没有被赋值给你的Dialog实例——字典还在创建过程中,根本没绑定到self上,自然会报错说找不到这个属性。

另外先提个小笔误:你代码里height的判断写反了,kwargs['width'] if 'height' in kwargs else 170这里应该是kwargs['height'],不然不管有没有传height参数,都会取width的值,这肯定不是你想要的。

下面是修正后的代码,思路是先把width和height的取值单独存到局部变量里,再用这些变量构建geometry字典:

class Dialog: 
    def __init__(self, **kwargs): 
        # 先单独获取width和height,用get方法更简洁,还能避免KeyError
        width = kwargs.get('width', 300)
        height = kwargs.get('height', 170)
        # 现在直接用局部变量构建geometry,不需要访问还未创建的self.geometry
        self.geometry = { 
            'width': width, 
            'height': height, 
            'x': width / 2, 
            'y': height / 2 
        }

这样修改后,既解决了AttributeError的问题,也修正了height的笔误,同时用kwargs.get()替代了原来的if-else判断,代码更简洁健壮——如果kwargs里没有对应的key,get方法会直接返回默认值,不用手动判断key是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:32:50