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 相关文章推荐
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
Python实现仿射密码的思路详解
Apr 23 Python
django queryset 去重 .distinct()说明
May 19 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
python中翻译功能translate模块实现方法
Dec 17 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
Python 数据可视化之Matplotlib详解
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
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
python处理中文编码和判断编码示例
2014/02/26 Python
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
python文件读写代码实例
2019/10/21 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
副总经理岗位职责
2014/03/16 职场文书
逃课检讨书
2015/01/26 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
七个Python必备的GUI库
2021/04/27 Python