property属性
- 负责把一个方法当做属性进行使用,这样做可以简化代码。
1 装饰器方式定义property属性
@property
表示把方法当做属性使用, 表示当获取属性时会执行下面修饰的方法;@方法名.setter
表示把方法当做属性使用,表示当设置属性时会执行下面修饰的方法;- 装饰器方式的property属性修饰的方法名一定要一样。
class Student(object):
def __init__(self):
self.__age = 0
@property # 把age方法当做属性使用, 当获取属性时会执行下面的方法
def age(self):
return self.__age
@age.setter # 把age方法当做属性使用, 当设置属性时会执行下面的方法
def age(self, new_age):
if new_age >= 100:
print("活到老学到老?Are you really?")
else:
self.__age = new_age
p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000
===运行结果:==============================================================
0
25
活到老学到老?Are you really?
2 类属性方式定义property属性
类属性 = property(获取值方法名, 设置值方法名)
class Student(object):
def __init__(self):
self.__age = 0
def get_age(self): # 当获取age属性的时候会执行该方法
return self.__age
def set_age(self, new_age): # 当设置age属性的时候会执行该方法
if new_age >= 100:
print("活到老学到老?Are you really?")
else:
self.__age = new_age
age = property(get_age, set_age) # 类属性方式的property属性
p = Student()
print(p.age)
p.age = 25
print(p.age)
p.age = 1000
===运行结果:==============================================================
0
25
活到老学到老?Are you really?