Python TypeError:'int'对象不可调用问题解决@property使用误区
修正方案
你的代码里存在几个明显错误,导致抛出TypeError,以下是具体问题和修复后的代码:
错误分析
- 属性调用方式错误:
tenvalue被@property装饰为属性,不是可调用方法,不能用obj.tenvalue()的方式调用,直接访问obj.tenvalue即可。 - setter赋值错误:setter方法里错误地给
self.name赋值,应该修改实例变量self._value,否则原属性不会更新。 - 属性名拼写错误:
obj.tenvalues = 22里多了一个s,正确属性名是tenvalue。 - setter冗余返回值:setter方法不需要返回值,Python会忽略该返回结果。
修复后的代码
class MyClass: def __init__(self, value): self._value = value def show(self): print(f"Value is {self._value}") @property def tenvalue(self): return self._value * 10 @tenvalue.setter def tenvalue(self, nv: int): self._value = nv # 修正为更新self._value obj = MyClass(10) print(obj._value) obj.tenvalue = 22 # 修正属性名拼写错误 print(obj.tenvalue) # 直接访问属性,不要加() obj.show()
运行输出
10 220 Value is 22
内容的提问来源于stack exchange,提问作者Raghav Coder PY
相关产品推荐
相关产品推荐

