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中zip和unzip数据的方法
May 27 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
Python爬虫:Request Payload和Form Data的简单区别说明
Apr 30 Python
Python基础之元编程知识总结
May 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
对Python 数组的切片操作详解
2018/07/02 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
在django模板中实现超链接配置
2019/08/21 Python
Django发送邮件功能实例详解
2019/09/02 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
django rest framework使用django-filter用法
2020/07/15 Python
python 将Excel转Word的示例
2021/03/02 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android