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双向链表实现实例代码
Nov 21 Python
Python简单基础小程序的实例代码
Apr 28 Python
python实现动态创建类的方法分析
Jun 25 Python
如何安装并使用conda指令管理python环境
Jul 10 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
python爬虫基础知识点整理
Jun 02 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
Django操作cookie的实现
May 26 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 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+dbfile开发小型留言本
2006/10/09 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
javascript History对象原理解析
2020/02/17 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
解读! Python在人工智能中的作用
2017/11/14 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python生成器推导式用法简单示例
2019/10/08 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
大学生最新职业生涯规划书范文
2014/01/12 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
婚宴主持词
2015/06/30 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
mysql的单列多值存储实例详解
2022/04/05 MySQL
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
mysql 排序失效
2022/05/20 MySQL