python面向对象的私有化

本文探讨了面向对象编程中的私有化实现,包括如何通过`__属性`进行属性隐藏和通过公有方法set和get控制访问。讲解了私有化的好处,如保护属性免受外部修改,通过函数控制内容和提供访问接口。实例演示了`Student`类的创建和属性操作。

面向对象的私有化

"""
私有化
封装:1.私有化属性 2.定义公有set和get方法
__属性:就是将属性私有化,访问权限仅仅限于类中
"""

"""
好处:
1.隐藏属性不被外界随意修改
2.也可以通过函数来修改
3.要写函数set 并且可以控制修改的内容
4.如果想获取具体的某一个属性
使用get函数
"""


class Student:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        self.__score = 60

    # 定义公有的set和get方法
    # set是为了赋值
    def setAge(self, age):
        if 0 < age < 120:
            self.__age = age
        else:
            print('年龄不在正常范围内')

    # get是为了取值
    def getAge(self):
        return self.__age

    # 修改名字的时候,设置名字的要求
    # 例 长度必须是六位
    def setName(self, name):
        if len(name) == 6:
            self.__name = name
        else:
            print('名字不是六位')

    def getName(self):
        return self.__name

    def __str__(self):
        return f'姓名{self.__name, self.__age, self.__score}'


xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.setAge(20)
print(xiaoming)
xiaoming.setName('xiaohua')
print(xiaoming)

xiaocui = Student('xiaocui', 19)
print(xiaocui)

# 单独拿到小明的年龄
print(xiaoming.getAge())
print(xiaocui.getName())

"""
通过装饰器
"""


class Student:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        self.__score = 60

    # 先有它的返回值相当于get
    @property
    def age(self):
        return self.__age

    # 再有set可以改变属性值
    @age.setter
    def age(self, age):
        if 0 < age < 120:
            self.__age = age
        else:
            print('年龄不在正常范围内')

    def __str__(self):
        return f'姓名{self.__name, self.__age, self.__score}'


xiaoming = Student('xiaoming', 18)
print(xiaoming)
xiaoming.age = 30
print(xiaoming)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

azured_xu

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值