# -*- coding:utf-8 -*-
1.添加了判断是否是成年的函数# 执行age函数,给_age属性赋值
class Women(object):
def __init__(self, age):
# 执行age函数,给_age属性赋值
self.age = age
2.把value的值赋值给一个新的属性 self,_age
def set_age(self, value):
if not isinstance(value, int):
raise TypeError('age must be a int value!')
self._age = value
@age.setter
def age(self, value):
# 判断传递过来的值是否为整数类型,不是整数类型直接抛出异常
if not isinstance(value, int):
# 触发异常
raise TypeError('age must be a int value!')
self._age = value
# 判断当前对象的年龄是否大于等于18
if self._age >= 18:
# 添加一个属性,表示是否未成年
self.is_ok = True
print('你已成年')
else:
self.is_ok = False
print('未成年')
判断是否满足条件,如果不满足,就抛出异常
3. @age.deleter 装饰器相当于给age函数绑定了一个删除属性的功能
@age.deleter
def age(self):
# 在删除属性之前,判断是否拥有这个属性
if hasattr(self, '_age'):
del self._age
print('已经成功删除_age属性!')
else:
print('%s没有_age属性,无法执行删除操作'%self)
4,调用执行
w = Women(0)
print(w.age, w.is_ok)
# 相当于 给对象 属性赋值
w.age = 18
print(w.age, w.is_ok)
del w.age
del w.age
5.完整代码:
# -*- coding:utf-8 -*-
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
# 判断当前对象的年龄是否大于等于18
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
del w.age
6.以上代码的执行结果为;
未成年
0 False
你已成年
18 True
已经成功删除_age属性!
<__main__.Women object at 0x0000000000B74278>没有_age属性,无法执行删除操作