楼主: Ruby389
40 0

[其他] 基于SpringBoot的停车场管理系统 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-5-6
最后登录
2018-5-6

楼主
Ruby389 发表于 2025-11-14 12:09:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Python封装的概念与实现

一、封装的核心概念

封装是面向对象编程的三大特性之一(封装、继承、多态),其核心包含两个层面:

  1. 数据隐藏

    将对象的内部状态(属性)和实现细节隐蔽,仅暴露必要的访问接口。

    数学表示:设对象状态为 \( S \),对外接口为 \( I \),则 \( I = f(S) \)

  2. 行为绑定

    将操作数据的方法与数据本身绑定在同一个逻辑单元(类)中,形成自包含实体。

二、Python的封装实现机制

#1. 访问控制(命名约定)

  • 公有成员:直接定义(如 `self.value`)
  • 受保护成员:单下划线前缀(如 `self._value`)
  • 私有成员:双下划线前缀(如 `self.__value`)

私有成员通过名称修饰(Name Mangling)实现:

\( \text{私有变量名} \rightarrow _\text{ClassName}__\text{variableName} \)

#2. 属性控制器(Property)

使用 `@property` 装饰器实现安全的属性访问:

class Temperature:
    def __init__(self):
        self.__celsius = 0  # 私有属性
    @property
    def celsius(self):  # Getter
        return self.__celsius
    @celsius.setter
    def celsius(self, value):  # Setter
        if value < -273.15:
            raise ValueError("绝对零度不可达")
        self.__celsius = value

三、完整封装示例

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner  # 公有属性
        self.__balance = balance  # 私有属性

    def deposit(self, amount):
        if amount <= 0:
            raise ValueError("必须为正数")
        self.__balance += amount

    def withdraw(self, amount):
        if amount > self.__balance:
            raise ValueError("余额不足")
        self.__balance -= amount

    @property
    def balance(self):  # 只读接口
        return self.__balance

# 使用示例

account = BankAccount("张三", 0)
    account.deposit(500)
    account.withdraw(200)
    print(f"{account.owner}的余额: {account.balance}元")
    # 输出: 张三的余额: 300元

四、封装的优势

  1. 安全性:防止外部直接修改敏感数据(如 `__balance`)
  2. 易维护:内部实现变更不影响外部调用(如修改余额计算逻辑)
  3. 接口清晰:通过方法明确操作边界(如 `deposit()`/`withdraw()`)
  4. 数据校验:可在方法中添加业务规则(如取款金额校验)
最佳实践:优先通过方法操作属性,避免直接暴露数据成员;对需要外部访问的属性使用property控制访问权限。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Spring Pring 管理系统 RING boot

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 17:01