楼主: JAHU-27
48 0

基于Django的豆瓣图书的热门小说推荐及管理系统的设计与实现 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

14%

还不是VIP/贵宾

-

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

楼主
JAHU-27 发表于 2025-11-14 12:10:16 |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 _ClassName__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("张三", 1000)
account.deposit(500)
account.withdraw(200)
print(f"{account.owner}的余额: {account.balance}元")
输出: 张三的余额: 1300元

四、封装的优势

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

扫码加我 拉你入群

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

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

关键词:django 小说推荐 管理系统 管理系 Jan

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

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-3 05:58