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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python lambda和Python def区别分析
Nov 30 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
selenium+python自动化测试之环境搭建
Jan 23 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
Python decimal模块使用方法详解
Jun 08 Python
Python OpenCV实现图形检测示例详解
Apr 08 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
Python读写配置文件的方法
2015/06/03 Python
Django 前后台的数据传递的方法
2017/08/08 Python
Python反射用法实例简析
2017/12/22 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
Python API自动化框架总结
2019/11/12 Python
Python bytes string相互转换过程解析
2020/03/05 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
儿科护士自我鉴定
2013/10/14 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
大学军训感言1000字
2014/02/25 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
教师职位说明书
2014/07/29 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
会计师事务所实习证明
2014/11/16 职场文书
追悼会答谢词范文
2015/09/29 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL
Spring 使用注解开发
2022/05/20 Java/Android