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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python爬取网易云音乐热门评论
Mar 31 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
PYTHON基础-时间日期处理小结
May 05 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
Python如何优雅获取本机IP方法
Nov 10 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
用python画城市轮播地图
May 28 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
基于PHP array数组的教程详解
2013/06/05 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
表单内同名元素的控制
2006/11/22 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
Python数据类型学习笔记
2016/01/13 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
销售实习自我鉴定
2013/12/07 职场文书
合作协议书范本
2014/04/17 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书