Python 面向对象之封装、继承、多态操作实例分析


Posted in Python onNovember 21, 2019

本文实例讲述了Python 面向对象之封装、继承、多态操作。分享给大家供大家参考,具体如下:

封装、继承、多态 是面向对象的3大特性

为啥要封装

Python 面向对象之封装、继承、多态操作实例分析

Python 面向对象之封装、继承、多态操作实例分析

好处

在使用面向过程编程时,当需要对数据处理时,需要考虑用哪个模板中哪个函数来进行操作,但是当用面向对象编程时,因为已经将数据存储到了这个独立的空间中,这个独立的空间(即对象)中通过一个特殊的变量(class)能够获取到类(模板),而且这个类中的方法是有一定数量的,与此类无关的将不会出现在本类中,因此需要对数据处理时,可以很快速的定位到需要的方法是谁 这样更方便

全局变量是只能有1份的,多很多个函数需要多个备份时,往往需要利用其它的变量来进行储存;而通过封装 会将用来存储数据的这个变量 变为了对象中的一个“全局”变量,只要对象不一样那么这个变量就可以再有1份,所以这样更方便

代码划分更清晰

面向过程

全局变量1
全局变量2
全局变量3
...
def 函数1():
  pass
def 函数2():
  pass
def 函数3():
  pass
def 函数4():
  pass
def 函数5():
  pass

面向对象

class 类(object):
  属性1
  属性2
  def 方法1(self):
    pass
  def 方法2(self):
    pass
class 类2(object):
  属性3
  def 方法3(self):
    pass
  def 方法4(self):
    pass
  def 方法5(self):
    pass

为啥要继承

Python 面向对象之封装、继承、多态操作实例分析

说明

能够提升代码的重用率,即开发一个类,可以在多个子功能中直接使用

继承能够有效的进行代码的管理,当某个类有问题只要修改这个类就行,而其继承这个类的子类往往不需要就修改

怎样理解多态

class MiniOS(object):
  """MiniOS 操作系统类 """
  def __init__(self, name):
    self.name = name
    self.apps = [] # 安装的应用程序名称列表
  def __str__(self):
    return "%s 安装的软件列表为 %s" % (self.name, str(self.apps))
  def install_app(self, app):
    # 判断是否已经安装了软件
    if app.name in self.apps:
      print("已经安装了 %s,无需再次安装" % app.name)
    else:
      app.install()
      self.apps.append(app.name)
class App(object):
  def __init__(self, name, version, desc):
    self.name = name
    self.version = version
    self.desc = desc
  def __str__(self):
    return "%s 的当前版本是 %s - %s" % (self.name, self.version, self.desc)
  def install(self):
    print("将 %s [%s] 的执行程序复制到程序目录..." % (self.name, self.version))
class PyCharm(App):
  pass
class Chrome(App):
  def install(self):
    print("正在解压缩安装程序...")
    super().install()
linux = MiniOS("Linux")
print(linux)
pycharm = PyCharm("PyCharm", "1.0", "python 开发的 IDE 环境")
chrome = Chrome("Chrome", "2.0", "谷歌浏览器")
linux.install_app(pycharm)
linux.install_app(chrome)
linux.install_app(chrome)
print(linux)

运行结果

Linux 安装的软件列表为 []
将 PyCharm [1.0] 的执行程序复制到程序目录...
正在解压缩安装程序...
将 Chrome [2.0] 的执行程序复制到程序目录...
已经安装了 Chrome,无需再次安装
Linux 安装的软件列表为 ['PyCharm', 'Chrome']

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
python3抓取中文网页的方法
Jul 28 Python
详解python基础之while循环及if判断
Aug 24 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
jupyter notebook清除输出方式
Apr 10 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 Python
用python画一只可爱的皮卡丘实例
Nov 21 #Python
Python 私有化操作实例分析
Nov 21 #Python
使用python的turtle绘画滑稽脸实例
Nov 21 #Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 #Python
Python 类的魔法属性用法实例分析
Nov 21 #Python
python画蝴蝶曲线图的实例
Nov 21 #Python
Python 静态方法和类方法实例分析
Nov 21 #Python
You might like
新鲜出炉的js tips提示效果
2011/04/03 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python中用于计算对数的log()方法
2015/05/15 Python
详解Python with/as使用说明
2018/12/13 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
个人简历自荐信
2013/12/05 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
小学数学教研活动总结
2014/07/01 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis