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中使用gzip模块压缩文件的简单教程
Apr 08 Python
python使用nntp读取新闻组内容的方法
May 08 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Django实现自定义404,500页面教程
Mar 26 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
Python框架Flask的基本数据库操作方法分析
Jul 13 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
解决Python二维数组赋值问题
Nov 28 Python
基于python实现检索标记敏感词并输出
May 07 Python
python 对xml解析的示例
Feb 27 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 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
神族 Protoss 历史背景
2020/03/14 星际争霸
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP速成大法
2015/01/30 PHP
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
python 将md5转为16字节的方法
2018/05/29 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
python爬取内容存入Excel实例
2019/02/20 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Django-imagekit的使用详解
2020/07/06 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
年度安全生产目标责任书
2014/07/23 职场文书
力学专业求职信
2014/07/23 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
春节慰问简报
2015/07/21 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
Python 语言实现六大查找算法
2021/06/30 Python
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android