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使用pil生成缩略图的方法
Mar 26 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
对python中的argv和argc使用详解
Dec 15 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
Python开发五子棋小游戏
Apr 28 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中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
python中readline判断文件读取结束的方法
2014/11/08 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python多线程扫描端口代码示例
2018/02/09 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python实现某论坛自动签到功能
2019/08/20 Python
python制作朋友圈九宫格图片
2019/11/03 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
计算机科学系职业生涯规划书
2014/03/08 职场文书
销售团队激励口号
2014/06/06 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
作风建设年度心得体会
2014/10/29 职场文书
公司管理制度范本
2015/08/03 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL