@property装饰器-2

# -*- 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属性,无法执行删除操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值