网站首页 > 技术文章 正文
“封装” 就是将抽象得到的数据和行为相结合,形成一个有机整体
- 元组,列表,字典等等:数据的封装,通过引用去使用数据
- 函数:算法的封装如果没有函数,功能要靠每一行代码去直接执行没有函数的话,耦合度会很高,复用性很差,开发效率也非常低
封装的目的是简化编程和增加安全性
- 使用者不必关系具体的实现细节
- 通过接口(万能的点 .)
- 还可以给予特定的访问权限来使用类的成员
- 明确区分内外类的实现者 可以修改内部封装的东西而不影响外部调用者外部调用者 只需要直到自己可以使用该类对象的哪些功能
私有属性和私有方法
- 标识符以双下划线 __ 开头的是私有成员,在外部不可以直接用这种属性或方法名调用,子类中也不能访问到这个数据
- 可以提供外界访问的接口将不需要对外提供的内容都隐藏起来把属性都隐藏,提供公共方法对其访问
- 双下划线开头的属性在继承给子类时,子类是无法覆盖的
私有方法示例:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
xiaoming = Person('小明', 17)
# print(xiaoming.__age) # 程序会报错,找不到__age属性
print(xiaoming.get_age())
xiaoming.set_age(20)
print(xiaoming.get_age())
输出的结果为:
17
20
私有属性和私有方法并不是绝对不可以在外部访问和修改。我们可以通过在私有属性或方法名前加上 _类名,就可以调用私有属性和方法了:
class Person:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
xiaoming = Person('小明', 17)
print(xiaoming._Person__age)
xiaoming._Person__age = 20
print(xiaoming._Person__age)
破解私有属性和私有方法:
- 在名称前加上 _类名
- 其实双下划线仅仅是一种变形操作:类中所有双下划线开头的名称如 __x 都会自动变形成:_类名__x 的形式
封装总结
- 对外隐藏类内的具体实现,只提供接口,供外界使用
- 可以将属性和方法设置成私有的,__,设置成私有后,类内部可以访问,类外部无法访问
猜你喜欢
- 2025-01-24 python时间操作,最全封装,各种年月日加减、转换、获取
- 2025-01-24 Python 打包与发布:setuptools 和 wheel 的全攻略
- 2025-01-24 [Python办公]Python脚本如何最小化打包成 .exe 文件
- 2025-01-24 将python打包成exe的方式(python程序如何打包生成exe文件)
- 2025-01-24 Python运维常用的20个库(python运维项目)
- 2025-01-24 python 快速打包部署可执行文件(python 快速打包部署可执行文件的方法)
- 2025-01-24 python打包exe与源码保护(python打包程序exe)
- 2025-01-24 python程序打包成.exe执行文件,去掉多余文件,减小体积
- 2025-01-24 python打包exe指南来了,pyinstaller打包教程
- 2025-01-24 python打包exe,各种bug处理,以及解决方案
- 258℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 83℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)