面向对象--属性封装


一、什么是属性封装

我们希望将python中的属性隐藏起来,避免外部的不正当修改,只通过内部方法设置和访问属性的值

二、属性封装的优点

1.像公有属性一样使用

2.具备函数校验功能

3.隐藏真实成员变量,避免外部直接访问

三、装饰器说明

  • @Perporty 用于将方法伪装成只读属性,用来获取值
  • @属性名 + setter方法,定义属性的写操作,用于设置值

四、代码示例

class People:
    def __init__(self,name,age,sex):
        self.name = name
        self._age = age
        self._sex = sex
    @property
    def sex(self):

        return self._sex
    @sex.setter
    def sex(self,sex):
        if sex in ['男','女']:
            self._sex = sex
        else:
            print('性别有误')

    def __get_age(self):
        print("执行了get_age方法")
        return self._age
    def __set_age(self,age):
        if 100 >= age >= 0:
            self._age =age
            print("年龄设置成功")
        else:
            print('年龄不合法')
    age = property(fget=__get_age,fset=__set_age)
p = People('马云',23,'男')
p.age = -100
p.age = 100
# print(p)
p.sex = '包'
# print(p)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值