python中的属性封装

属性封装

当类中的某些属性,我们要限定他的读写权限的时候,我们就可以使用类的属性封装。

属性封装的装饰器

  • property (只读)
  • obj_name.setter (只写)
  • obj_name.deleter (可删除)

e.g.

class People(object):
    """
    描述人的类实现,限定性别和年龄范围.
    """

    def __init__(self, name):
        self.name = name
        # 私有属性 存储校验数据
        self.__age = 0
        self.__gender = None

    @property # 读
    def age(self):
        if self.__age == 0:
            print("you haven't set age")
            return None
        return self.__age

    @property # 读
    def gender(self):
        if self.__gender is None:
            print("you haven't set gender")
            return None
        return self.__gender

    @age.setter # 写
    def age(self, age):
        if 0 < age < 120:
            self.__age = age
        else:
            print('age set failure!')

    @gender.setter # 写
    def gender(self, gender):
        if gender.lower() in ['man', 'woman']:
            self.__gender = gender.lower()
        else:
            print('gender set failure')


if __name__ == '__main__':
    people = People('laowang')

    print('name:', people.name, 'gender:', people.gender, 'age:', people.age)
    people.age = 10
    people.gender = 'man'
    print('name:', people.name, 'gender:', people.gender, 'age:', people.age)
    people.age = 1000
    people.gender = 'double'
    print('name', people.name, 'gender:', people.gender, 'age', people.age)

结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值