错误信息
????????我们在使用property装饰器时,可能因为装饰器名称书写错误导致下述错误:
TypeError: descriptor 'setter' requires a 'property' object but received a 'function'

问题分析
????????出现此错误的原因是我们将所有的装饰器名称都写为了property,而不是我们的类中相同的方法名:
问题代码
class AgeDemo(object):
def __init__(self, age):
self.age = age
@property
def age_test(self):
return self.age
@property.setter
def age_test(self, age):
if not isinstance(age, int):
raise TypeError('TypeError')
self.age = age

解决报错
????????将图中出现报错的装饰器名称改为我们类中设置的相同名称 ,即可解决此报错!!! 代码如下:
class AgeDemo(object):
def __init__(self, age):
self.age = age
@property
def age_test(self):
return self.age
@age_test.setter
def age_test(self, age):
if not isinstance(age, int):
raise TypeError('TypeError')
self.age = age

参考文档
????????其它关于python装饰器的问题可参考官方文档:python装饰器官方文档!!!
|