类的封装

本文介绍了面向对象编程中的封装特性,通过实例解释了封装的作用和重要性,包括提高安全性、降低复杂度和保证数据完整性。讨论了Python中封装的两个层面,即公有和私有,并提供了隐藏属性的示例及封装原则。最后,展示了如何在实践中应用封装,确保数据安全。

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

引入

先来举个例子 :

当你摁下电脑开机键, 你不需要考虑主板是怎么通电的、 磁盘是怎么转动的、系统的信息是怎么加载的、里面的一系列化学或者物理变化是怎么样的,你面对的就是一个开关键, 摁下它, 电脑就开起来了.

v2-cfc14c7293afd962ecbd1dc31dafd002

又比如:

一个玩具制造厂, 制作一个机器人, 我们需要去考虑机器人的每一个细节: 手臂、腿、头、躯干等等,制作简单的玩具不要紧, 如果设计的玩具非常的复杂, 并且这工厂还有很多其他类型的玩具生产(小熊, 佩奇, 芭比公主,飞机模型等等)

497915717af56b63a5454a26b127916

上面我们使用面向过程的思想去设计, 在程序中就会让我们的代码很长, 很杂乱

于是工厂听取了小王的建议, 引进了一台制造机器人玩具的机器, 我们只需要摁下机器的开关, 它就会自动制造机器人

这个时候我们不再去关注是先制造手还是脚还是躯干这些细节, 我们面对的就只是一台机器, 这机器就是一个对象

原理 : 以前我们需要关注制作玩具的每个步骤, 现在我们将步骤都封装到一个机器里面, 留给我们的只剩一个开关, 我们只需要摁开关就可以生产玩具了, 这就是面向对象的三大特性之一 : 封装, 下面我们将详细展开介绍

一.封装

1.什么封装

  • 封装是Python中面向对象的三大特性之一
  • 封装就是隐藏对象的属性和实现细节, 仅对外提供公共访问方式

2.为什么使用封装

  • 提高安全性 : 避免用户对类中属性或方法进行不合理的操作
  • 隔离复杂度 : 就以上面的例子为例, 你只需要机器提供给你的开关, 内部结构不需要知道
  • 保证内部数据结构完整性 : 很好的避免了外部对内部数据的影响,提高了程序的可维护性
  • 提供代码的复用性

3.封装的原则

  • 将不需要对外提供的功能都给隐藏起来
  • 把属性都隐藏, 提供公共方法对其方法

二.隐藏

在python中用双下划线开头的方式将属性隐藏起来(设置成私有的)

  • 其实这仅仅这是一种变形操作且仅仅只在类定义阶段发生变形
  • 类中所有双下划线开头的名称如__xxx都会在类定义时自动变形成:_[类名]__xxx的形式
class Eat:
    __breed = "五花肉"        # 变形 : "_Eat__breed"

    def __init__(self):     
        self.__meat = "大块"  # 变形 : "_Eat__meat"

    def __eat(self):          # 变形 : "_Eat__eat"
        print(f"吃了{self.__meat}的{self.__breed}")

    def eat_meat(self):
        self.__eat()          # 只有在类的内部才可以通过"__eat"的形式访问到

P1 = Eat()

🍔调用类提供的接口(方法)
P1.eat_meat()      # 吃了大块的五花肉

🍔调用隐藏的属性/方法,报错
print(P1.breed)    # 报错 "AttributeError" 没有该属性
print(P1.__breed)  # 报错 "AttributeError" 没有该属性
P1.__eat()         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

给你骨质唱疏松

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

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

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

打赏作者

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

抵扣说明:

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

余额充值