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提取页面内url列表的方法
May 25 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
Python3 log10()函数简单用法
Feb 19 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
Django 开发环境配置过程详解
Jul 18 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
python实现将中文日期转换为数字日期
Jul 14 Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP实现微信提现功能
2018/09/30 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
javascript实现动态标签云
2015/10/16 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
django缓存配置的几种方法详解
2018/07/16 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
python openssl模块安装及用法
2020/12/06 Python
电气专业推荐信范文
2013/11/18 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
新书发布会策划方案
2014/06/09 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Java Socket实现多人聊天系统
2021/07/15 Java/Android
一级电子管军用接收机测评
2022/04/05 无线电