python中对象的多态、封装、继承介绍
python是一种面向对象的语言。面向对象程序设计中的术语对象基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。使用对象替代全局变量和函数的原因可能有很多,其中对象最重要的优点包括三个方面:
- 多态:可以对不同类的对象使用同样的操作
- 封装:对外部世界隐藏对象的工作细节
- 继承:以普通的类为基础建立专门的类对象
多态和方法
程序得到了一个对象,不知道它是怎么实现的,它可能有多种"形状"。
绑定到对象特性上面的函数称为方法。
>>> 'abc'.count('a') 1 >>> [1,2,'a'].count('a') 1
对应变量x来说,不需要知道它是字符串还是列表,就可以调用它的count方法,不用管它是什么类型
举例,标准库random中包含choice函数,可以从序列中随机选出元素。给变量赋值:
>>> from random import choice >>> x=choice(['Hello,world!',[1,2,'e','e',4]])
运行后,变量x随机选择一个值
>>> x.count('e') 1 >>> x 'Hello,world!' >>>
多态的多种形式
任何不知道对象到底是什么类型,但是又要对对象操作时,都会用到多态。
>>> 1+2 3 >>> 'Hello,'+'world' 'Hello,world'
>>> add(1,2) 3 >>> add('Hello,','world') 'Hello,world'
参数可以是任何支持加法的对象。
编写打印对象长度消息的函数
>>> def length_message(x):print "The length of",repr(x),"is",len(x)
函数中使用了repr函数,repr函数是多态特性的代表之一
>>> length_message('Fnord') The length of 'Fnord' is 5 >>> length_message([1,2,3]) The length of [1, 2, 3] is 3
封装
封装是对全局作用域中其他区域隐藏多余信息的原则。不用关心对象是如何构建的而直接进行使用
假设有一个叫做OpenObject的类:
>>> o=OpenObject() >>> o.setName('Sir Lancelot') >>> o.getName() #此案例并不能运行成功,只是假设 'Sir Lancelot'
创建了一个对象后,将变量o绑定到该对象上。可以使用setName和getName方法(假设已经由OpenObject类提供)。
假如变量o将它的名字存储在全局变量globalName中:
在使用OpenObject类的实例时,不得不关心globalName的内容。
>>> globalName 'Sir Lancelot' >>> globalName='Sir Gumby' >>> o.getName() 'Sir Gumby'
如果创建了多个OpenObject实例会出现问题
>>> o1=OpenObject() >>> o2=OpenObject() >>> o1.setName('Robin Hood') >>> o2.getName() 'Robin Hood'
如果不用全局变量而用特性重写类,并且重命名为ClosedObject
>>> c=ClosedObject() >>> c.setName('Sir Lancelot') >>> c.getName() 'Sir Lancelot'>>> r=ClosedObject() >>> r.setName('Sir Robin') >>> r.getName() 'Sir Robin>>> c.getName() 'Sir Lancelot'
继承
如果已经有了一个类,又想建立一个新的类似的类,让新的类从老的类中继承方法,新的类增加几个方法
转载于:https://www.cnblogs.com/nsds/p/6489790.html
python中对象的多态、封装、继承介绍相关推荐
- 详解python中GPU版本的opencv常用方法介绍
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 引 ...
- python中的内置函数getattr()介绍及示例
python中的内置函数getattr()介绍及示例 其实getattr()这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以把一个类可能要调用的方法放在配置文件里 ...
- python数组用sum求和_对python中array.sum(axis=?)的用法介绍
根据代码中运行的结果来看,主要由以下几种: 1. sum():将array中每个元素相加的结果 2. axis对应的是维度的相加. 比如: 1.axis=0时,对饮搞得是第一个维度元素的相加, [[0 ...
- python中对象的定义_python中对象的定义和使用
python中对象的定义和使用 发布时间:2020-06-22 11:57:16 来源:亿速云 阅读:98 作者:Leah 今天就跟大家聊聊有关python中对象的定义和使用,可能很多人都不太了解,为 ...
- python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...
python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...
- python中对象的概念是什么_python面向对象编程的基本概念
作者|HIMANSHI SINGH 编译|VK 来源|Analytics Vidhya 介绍 在学习面向对象编程时,我决定深入研究它的历史,结果发现它很迷人.术语"面向对象编程"( ...
- python中对象的特性_python面对对象-三大特性
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到一个对象中. 把固定功能的代码封装到一个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- python中对象的概念是什么_简述Python中的面向对象编程的概念
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
- [机器学习]Python中Numpy,Pandas,Matplotlib,Scipy,Seaborn介绍
Python做数据挖掘很强大,最近几年很火的机器学习以及较为前沿的自然语言处理也会选用Python作为基础工具. 其中python做数据挖掘足够强大,不用怀疑. #1. Numpy介绍 Numpy是P ...
最新文章
- Nginx负载均衡集群介绍
- 【机器学习】libsvm使用的数据格式
- jquery 设置checkbox的checked属性 总是出问题
- ASP.NET前台JS与后台CS函数如何互相调用
- 2019云栖大会精品资料免费下载
- C++const的作用与使用
- uva 138——Street Numbers
- 图像的通道(channels)问题
- Spring - Netty (整合)
- PAT甲级题目对应知识点分类梳理
- 两个队列实现一个栈(Java)
- C# 实验五 银行系统
- 对于企业是云服务器划算还是自购服务器划算?
- CPU彪高分析及解决
- 使用Opencv+VS2015做数字图像识别
- numpy下 随机抽样
- jzoj4879. 少女觉
- gifcam使用缩小内存_GifCam使用方法
- xplorer spill address
- ROM制作---强制默认打开安卓最下方的虚拟按键和默认输入法修改