python 面向对象的三大特性之一: 封装
时间:2019-11-06
本文章向大家介绍python 面向对象的三大特性之一: 封装,主要包括python 面向对象的三大特性之一: 封装使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 封装的好处:
1. 将变化隔离
2. 便于使用
3. 提高复用性
4. 提高安全性
广义的封装: 实例化一个对象,给对象空间封装一些属性.
狭义的封装: 私有制.
私有成员:私有静态变量,私有方法,私有对象属性
私有静态变量:
实例化对象不能访问私有静态变量
类名不能访问私有静态变量
对于私有静态变量,类的外部不能访问
对于私有静态变量,类的内部都可以访问
子类(对象和类)不能访问父类的私有静态变量
私有方法:
类的内部可以访问
类外部不能访问
类的派生类(就是父类的方法)也不能访问
私有对象属性:
私有对象外部不能访问
私有对象在内部能够访问
1. 私有静态变量
class Myclass: __book = '书' # 类中的前面静态变量加了 '_ _'就变成了私有静态变量 class MyAlipay(Myclass): __money = 200 music = '音乐' def pay(self): # 对于私有静态变量,类的内部都可以访问 print(self.__money) # 在内部对象访问私有类 print(self.music) print(MyAlipay.__money) # 在内部类名访问私有类 # 对于私有静态变量,"类的|"外部不能访问 # print(self.__book) # 子类(对象和类)不能访问父类的私有静态变量 # print(MyAlipay.__book) m = MyAlipay() print(m.music) # print(m.__money) # 在外部对象不能访问私有变量 # print(MyAlipay.__money) # 在外部类名不能访问私有变量 m.pay() # 对于私有静量字段来说,只能在本类中内部访问,类的外部,派生类均不可访问.
2. 私有方法
class Myclass: __book = '书' def __func(self): print('父类的私有方法') class My(Myclass): sex = '不知' def __func1(self): print('本类的私有方法') def func2(self): self.__func1() # 在内部可以调用本类的私有方法 self.__func() # 父类的私有方法,不可以调用 m = My() # m.__func1() # 在类的外部不能调用 m.func2() # 在类的内部可以调用,但是类的派生类(就是父类的方法)也不能调用
3. 私有对象属性
class Parent: def __init__(self,name,age): self.__name = name self.age = age def func(self): print(self.__name) class Son(Parent): def func(self): print("in Son func") def func1(self): print(self.__name) p1 = Parent("小王",12) # print(p1.__name) # 私有对象外部不能访问 p1.func() # 私有对象在内部能够访问 print(p1.__dict__) s1 = Son('小张',12) # s1.func1() # 不能访问父类的私有对象属性 # print(s1.__name) # 不能访问父类的私有对象属性
原文地址:https://www.cnblogs.com/Pengdachui-1/p/11802251.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解android 中文字体向上偏移解决方案
- Android自定义控件仿ios下拉回弹效果
- 当飞桨PaddleHub遇到微信小程序,AI也能指物作诗
- Android仿QQ好友详情页下拉顶部图片缩放效果
- 数组对象转为Map
- TensorFlow2.X使用图片制作简单的数据集训练模型
- Android高性能日志写入方案的实现
- MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
- 想后台运行没想到导致磁盘满了
- 来看一道"简单的"C语言面试题
- 这行代码的打印结果确实让人迷惑!
- 如何实现一个高效的启发式算法?(VRPTW篇)
- Ubuntu Server搭建Hyperledger Fabric 2.1学习环境
- 辛辛苦苦学会的 webpack dll 配置,可能已经过时了
- 【程序中的数学】利用德摩根定律简化布尔运算