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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
Python如何获取文件指定行的内容
May 27 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
python re模块常见用法例举
Mar 01 Python
一文搞懂python异常处理、模块与包
Jun 26 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正则校验用户名介绍
2008/07/19 PHP
php之readdir函数用法实例
2014/11/13 PHP
PHP _construct()函数讲解
2019/02/03 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
如何抽象一个Vue公共组件
2017/10/17 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
Python 模板引擎的注入问题分析
2017/01/01 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
团队精神口号
2014/06/06 职场文书
六查六看六改心得体会
2014/10/14 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
父亲去世追悼词
2015/06/23 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
Python中字符串对象语法分享
2022/02/24 Python
Golang并发工具Singleflight
2022/05/06 Golang
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python