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

Python 3.9中@property的getter与setter报错问题求助

问题分析与解决

你的代码报错是因为**@property的使用方式完全错误**,核心问题出在getter和setter的命名绑定上:

错误原因

  • @property装饰的方法名应该是你要对外暴露的属性名(比如height),而不是带get_前缀的get_height
  • 对应的setter必须使用和getter完全相同的方法名,通过@属性名.setter装饰,不能另起set_height这样的名字

你原来的写法中,@get_height.setter装饰set_height方法,这并不能为get_height属性创建有效的setter,反而会导致set_height被当成普通方法,加上父类ForeignClass的潜在影响,最终触发'int' object is not callable错误。

修正后的代码

class Square(ForeignClass):
    def __init__(self, height=0, width=0):
        self._height = height
        self._width = width

    @property
    def height(self):
        return self._height

    @height.setter
    def height(self, height_param):
        self._height = height_param

A_obj = Square(90, 90)
print(A_obj.height)  # 直接访问属性,无需加括号
A_obj.height = 777   # 直接赋值来设置属性
print(A_obj.height)

关键说明

  • 用@property装饰height方法后,你可以像访问普通属性一样用A_obj.height获取值,不用加括号调用
  • @height.setter装饰同名的height方法后,就可以通过赋值语句A_obj.height = 777来设置内部的_height值
  • 内部用_height存储数据是Python的约定,表示这个属性是类内部使用的,不建议外部直接修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:33:34