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实现文件名批量替换和内容替换
Mar 20 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
Tensorflow 查看变量的值方法
Jun 14 Python
浅谈Python中的bs4基础
Oct 21 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Python socket服务常用操作代码实例
Jun 22 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函数 serialize()和unserialize()
2012/02/04 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
canvas时钟效果
2017/02/16 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python selenium firefox使用详解
2019/02/26 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
执行Python程序时模块报错问题
2020/03/26 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
幼儿园课题方案
2014/06/09 职场文书
白酒代理协议书范本
2014/10/26 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
同学会演讲稿
2019/04/02 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL