python - 面向对象编程的三大特征之一 - 封装
封装是面向对象编程的三大特征之一。
封装:
-
将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。
这样就可以无需关心方法内部的具体实现细节,从而隔离了复杂度。 -
像上一节 静态方法 中,类对象外部访问不了一些类对象内部的一些方法或者属性,
需要调用的话可以在类内部再提供一个方法(接口)用来访问那些隐藏的信息。
这样就可以实现对隐藏数据的保护。
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()
"""
插入银行卡!
输入密码!
验证账号!
输入金额!
出钞!
"""
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?