@property
的方式有点类似装饰器,它的核心是为了减少代码量。看下面的代码
class Person(object):
def __init__(self):
self._age = 0
@property
def age(self):
return self._age
@age.setter
def age(self, age):
if not isinstance(age, int):
raise ValueError("Age must be an integer")
if age < 0 or age > 130:
raise ValueError("Age out of range")
self._age = age
per = Person
per.age = 100
print(per.age)
方法声明为@property
,可以直接把方法名作为属性用,使用setter
,表示设置的时候,可以检查属性。