class Women(object):
def __init__(self, age):
# 执行age函数,给_age属性赋值
self.age = age
def set_age(self,value):
if not isinstance(value,int):
raise TypeError('age must be a int value !')
self._age = value
@property
def age(self):
return self._age
@age.setter
def age(self, value):
# 判断传递过来的值是否为整数类型,不是整数类型直接抛出异常
if not isinstance(value, int):
raise TypeError('age must be a int value !')
self._age = value
# 判断当前对象的年龄是否大于等于
if self._age >= 18:
# 添加一个属性,表示是否成年
self.is_ok = True
print('你已成年')
else:
self.is_ok = False
print('未成年!')
# @age.deleter 装饰器相当于给age函数绑定了一个删除属性的功能
@age.deleter
def age(self):
# 在删除属性之前,判断是否拥有这个属性
if hasattr(self, '_age'):
del self._age
print('成功删除_age属性!')
else:
print('%s没有_age属性,无法执行删除操作'%self)
w = Women(0)
print(w.age,w.is_ok)
w.age = 18
print(w.age,w.is_ok)
del w.age
执行结果:成功删除_age属性!
del w.age
执行结果:
<__main__.Women object at 0x0000000000B9BBA8>没有_age属性,无法执行删除操作
python(@property,setter,deleter)
最新推荐文章于 2022-12-05 17:50:30 发布