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内置函数的用法实例教程
Sep 08 Python
简单的编程0基础下Python入门指引
Apr 01 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
django中的setting最佳配置小结
Nov 21 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 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实现 上一篇、下一篇的代码
2012/09/29 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
vue实现计算器功能
2020/02/22 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
用pandas按列合并两个文件的实例
2018/04/12 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python中的colorlog库使用详解
2019/07/05 Python
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
社团文化节邀请函
2014/01/10 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python