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

使用@property装饰器时无法调用setter的问题求助

问题解决:@property装饰器无法调用setter的问题

你的代码里setter方法的名称错误,是导致无法赋值的核心原因。使用@property装饰器时,对应的setter方法必须和被装饰的属性方法同名,而不是自定义成set_name。

修正后的代码

class Worker:

    def __init__(self, name):
        self.__name = name

    @property
    def name(self):
        return self.__name

    # 方法名必须和@property装饰的方法一致,才能关联为setter
    @name.setter
    def name(self, new_name):
        self.__name = new_name

worker1 = Worker('A')
print(worker1.name)
worker1.name = 'B'
print(worker1.name)

原理说明

  • @property把name方法包装成了只读属性,要让它支持赋值操作,必须用@name.setter装饰一个同名方法(即def name(self, new_name))。
  • 你之前写的set_name方法无法和name属性建立关联,Python会默认name是只读属性,所以执行worker1.name = 'B'时会抛出AttributeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:42:04