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

Python报错AttributeError: 'bool'对象无'setter'属性的问题求助

解决AttributeError: 'bool' object has no attribute 'setter'问题

错误原因

你代码里的@w.setter写法完全错误——w是全局布尔变量,不是类中定义的property属性。类的setter装饰器必须和前面定义的property方法名对应,也就是要用@is_w.setter,而非@w.setter。另外,你直接修改全局变量w = True的操作会绕过类的property逻辑,根本触发不了listen()方法。

修正后的代码

w = False

class A(object):
    @property
    def is_w(self):
        global w
        return w

    @is_w.setter  # 改为对应property的方法名is_w
    def is_w(self, value):
        global w
        w = value
        self.listen(value)

    def listen(self, w_):
        if w_:
            print("worked!")
            self.is_w = False  # 通过property重置,保持逻辑统一

    def value_change(self):
        self.is_w = True  # 通过类属性设置,触发setter逻辑

测试示例

a = A()
a.value_change()  # 会打印"worked!",同时w被自动重置为False

关键注意点

  • 类的property setter装饰器必须和对应的property方法同名,不能用全局变量名
  • 所有需要触发监听逻辑的变量修改操作,都要通过类实例的is_w属性完成,不能直接操作全局变量w,否则不会执行listen()方法

内容的提问来源于stack exchange,提问作者Mo .haytham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:05:31