python基础篇(11):封装

1 什么是封装

通俗理解:封装,简而言之,就是把数据(变量)和操作这些数据的方法(函数)打包在一起,形成一个“黑箱”,外界只能通过预设的接口(方法)来访问或修改这个“黑箱”里的内容,而无需知道其内部是如何工作的。

专业术语:封装是面向对象编程(OOP)的四大基本原则之一,它通过隐藏对象的属性和实现细节,仅对外公开接口来控制外部对对象的访问。

2 封装原理

原理探索:

封装表示的是,将现实世界事物的:

  • 属性
  • 行为

封装到类中,描述为:

  • 成员变量
  • 成员方法

在Python中,我们主要通过创建类(class)来实现封装。类是一种自定义的数据类型,它可以包含属性(变量)和方法(函数)。属性用于存储数据,方法则是对这些数据进行操作的函数。通过设置访问权限(public, private),我们可以控制哪些内容可以被外部访问,哪些内容应该保持私有。

public(公有): 不加任何前缀的属性或方法,默认可以被任何代码访问。

private(私有): 以两个下划线__开头的属性或方法,表示这是类的内部实现细节,不应直接从外部访问。

3 封装的好处

  • 提高代码的可读性:封装使得代码结构清晰,逻辑更加集中,便于阅读和理解。
  • 增强安全性:通过限制对内部数据的直接访问,可以防止外部代码误操作导致的数据损坏。
  • 易于维护和升级:当需要修改内部实现时,只需调整类的内部代码,对外部代码的影响降到最低。
  • 促进代码复用:封装好的类可以作为组件,在不同的项目中重复使用,提高开发效率。

4 代码示例

Python中的封装主要依赖于名称修饰(Name Mangling)机制来实现私有属性的保护。当你为一个属性或方法加上双下划线__前缀时,Python会自动修改其名称,使其对外部代码不可见。

例如,如果你定义了一个名为__secret_value的私有属性,Python实际上会将其名称修改为_类名__secret_value。这种机制有效地阻止了外部代码直接访问该属性,除非通过类提供的公共方法。

class MyClass:
    def __init__(self):
        self.public_var = "任何人都能看见"
        self.__private_var = "只有我能看到"  # 私有变量

    def get_private_var(self):  # 公共方法,用于访问私有变量
        return self.__private_var


# 实例化类
my_obj = MyClass()

print(my_obj.public_var)  # 输出:任何人都能看见
print(my_obj.get_private_var())  # 正确访问私有变量的方式,输出:只有我能看到
my_obj.__private_var = "我好帅" #不报错,但是无效
print(my_obj.__private_var)  # 这将引发错误,因为直接访问私有变量被阻止

5 封装的应用场景

  • 数据库连接管理:在处理数据库交互的应用中,封装一个数据库连接类,可以隐藏连接细节、错误处理逻辑,只暴露执行查询、关闭连接等必要方法,大大简化了业务逻辑代码。
  • 用户认证模块:设计一个用户类,封装用户的登录信息、验证逻辑等敏感操作。这样,无论是在Web应用还是桌面软件中,都可以安全地处理用户登录,而不用担心密码等敏感信息被随意访问或泄露。
  • 高效的GUI组件:在图形界面编程中,每个按钮、文本框等组件都可以视为一个封装好的对象,它们内部处理事件响应、绘图逻辑,而开发者只需关注如何使用这些组件,极大提高了开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不死鸟.亚历山大.狼崽子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值