python--类封装如何保证数据的有效性-可读可写-只读-只写

方法1:私有可读可改

快捷键直接输入props+回车即可自动出现下方代码

"""
封装行为

需求:如何保证数据的有效性

    property 属性
        价值:保护实例变量
            1. 属性名与实例变量名称相同(拦截)
            2. 属性中操作私有变量(需要被保护)
        核心:拦截
"""


class Person(object):

    def __init__(self, name, hp, age):
        self.name = name
        self.hp = hp
        self.age = age
	
    @property
    def hp(self):
        return self.__hp  # 被保护数据

    @hp.setter
    def hp(self, value):
        if 0 <= value <= 100:
            self.__hp = value
        else:
            raise Exception("血量不对")

    #  age = property(读取函数)
    #  (1) 创建属性对象property()
    #  (2) 将下面的函数作为参数property(读取函数)
    #  (3) 将属性对象交给变量名关联age
    @property  # 保护数据,保护实例变量
    def age(self):
        return self.__age

    # age.setter(设置函数)
    # (1) 调用属性的setter函数
    # (2) 将下面的函数作为参数setter(设置函数)
    @age.setter
    def age(self, value):
        if value > 60:
            self.__age = 60
        elif value < 0:
            self.__age = 0
        self.__age = value


p1 = Person("小明", 20, 80)
print(p1.name)
print(p1.hp)
print(p1.age)

方法2:私有可读不可改

快捷键直接输入prop+回车即可自动出现下方代码

class Person(object):

    def __init__(self, name, hp, age):
        self.name = name
        self.__hp = hp
	
    @property
    def hp(self):
        return self.__hp

方法3:私有可改不可读

快捷键直接输入prop+回车即可自动出现下方代码

class Person(object):

    def __init__(self, name, hp):
        self.name = name
        self.hp = hp

    hp = property()
    @hp.setter
    def hp(self, value):
        self.__hp = value


p1 = Person("小红", 20)
print(p1.__dict__)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z千鑫

在线乞讨,行行好吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值