python - 面向对象编程的三大特征之一 - 封装

封装是面向对象编程的三大特征之一。

封装:

  1. 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
    这样就可以无需关心方法内部的具体实现细节,从而隔离了复杂度。

  2. 像上一节 静态方法 中,类对象外部访问不了一些类对象内部的一些方法或者属性,
    需要调用的话可以在类内部再提供一个方法(接口)用来访问那些隐藏的信息。

这样就可以实现对隐藏数据的保护。

class Student(object):
    def __init__(self):
        self.__score = 99  # __score 属性值只能在类对象内部访问

    def get_score(self):
        return self.__score

    def set_score(self, score):
        if 0 <= score <= 100:
            self.__score = score
        else:
            raise ValueError("成绩须在1-100之间!")


mc = Student()
mc.set_score(66)
print(mc.get_score())  # 66

mc.set_score(101)  # ValueError: 成绩须在1-100之间!

get_score()和set_score()方法是对外公开的,所以类对象外部可以通过get_score()和set_score()
方法来访问静态属性值 __score。


使用封装能隐藏对象实现细节,使代码更易维护,
同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。


# ATM 取款机的步骤:插入银行卡 - 输入密码 - 验证账号 - 输入金额取款 - 验证授权 - 出钞

class Money(object):
    def __card(self):
        print("插入银行卡!")

    def __password(self):
        print("输入密码!")

    def __verify(self):
        print("验证账号!")

    def __input(self):
        print("输入金额!")

    def __cash(self):
        print("出钞!")

    # 定义一个可以类对象外部可以访问的方法(接口) withdraw
    def withdraw(self):
        self.__card()
        self.__password()
        self.__verify()
        self.__input()
        self.__cash()

# 实例化
m = Money()
m.withdraw()

"""
插入银行卡!
输入密码!
验证账号!
输入金额!
出钞!
"""

posted @   西瓜_皮  阅读(166)  评论(0编辑  收藏  举报
编辑推荐:
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
阅读排行:
· Apifox不支持离线,Apipost可以!
· 历时 8 年,我冲上开源榜前 8 了!
· 零经验选手,Compose 一天开发一款小游戏!
· Trae 开发工具与使用技巧
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示