Python-09_封装

本文深入探讨了Python的封装概念,包括定义类、属性和方法,以及如何使用私有变量和方法来保护数据。通过实例展示了封装如何提高代码的模块性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"""
"""
"""
封装:
    定义:
        1.从数据角度讲:
            将一些基础变量复合为一个自定义类型。
            比如:向量(x,y,z 模长等操作)
                  狗(姓名,年龄,拉臭臭)
            不但可以准确的描述事物,还可以体现该事物的行为。
        2.从行为角度讲:
            向类外提供必要的功能,隐藏实现的细节。
            使用者可以不必操心实现过程。
        3.从设计角度讲:
            (1) 分而治之:
                -- 将一个大的需求分解为许多类,让每个类处理一个独立的功能。
                -- 优点:便于分工,便于复用,可扩展性强。
            (2) 封装变化
                -- 需求可能会变化的功能要单独封装,避免影响其他类。
            (3) 高内聚
                -- 类中各个方法都在完成一项任务
            (4) 低耦合
                -- 类与类的关联性、依赖度要低

            例如:活字印刷术(哪里错了,换哪里)
                  计算机硬件(哪里坏了,换哪里)


    语法:
        1.做法:命名使用双下划线开头
        2.作用:修改变量名,让外界”不能直接访问”
        3.本质:障眼法,也可以访问:
                _类名__成员名
"""
"""
封装--私有化
    私有化实例变量:在变量名称前,加入双下划线。
            本质:修改了变量名称。

总结:
    私有化变量:__名称
    通过方法操作变量:set_名称
                     get_名称
"""
class Student:
    """学生类"""
    # 类的设计者,限制该类对象只能有如下的实例变量(固定数量的实例变量,不能增加)
    # 含有__slots__属性的类所创建的对象没有__dict__属性
    __slots__ = ("__name","__age")

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

    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self,value):
        self.__name=value

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self,value):
        if 20<=value<=30:
            self.__age=value
        else:
            raise ValueError("好讨厌,不要")


s01=Student("new",25)
print(s01.name)
print(s01.__dict__)
print(dir(s01)) # 获取对象所有成员

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值