python基础18 ---多态与绑定方法
一、抽象类
1、抽象类的定义:从一堆类中抽象出相同的内容,重新组成一个新的类,这样的类属于抽象类。
2、香蕉类是一类水果,苹果类是一类水果,葡萄类是一类水果,但是他们都属于水果,从他们这些类中可以抽象出相同的部分都是属于水果类,这个水果类就属于抽象类。但是你永远无法吃到一个叫水果的对象,所以抽象类是不能被实例化的,他只能被别的类所继承,并且子类必须实现抽象方法。
3、该抽象类主要和abc模块结合使用。(之前将的读和写)
4、抽象类的本质还是类,指的是一组类的相似处,包括数据属性和函数属性,而接口只强调函数属性的相似度。二、多态
1、什么是多态?
多态指的是一类事物的多种形态,一个抽象类有多个子类,因而多态的概念依赖于继承。(水是个抽象类,他可以有水蒸气,泉水,冰等多种形态。)
2、序列类型有多种形态,分别是字符串,列表,元组,因此他们都遵循这个序列类型抽象类的使用方法,可以通过索引取值可以分片等。
三、多态性
1、什么是多态性?
多态性是指具有不同功能的函数或对象可以使用相同的函数名,这样就可以使用相同的函数名来调用不同功能的函数了。如图所示:

2、多态性分为静态多态性和动态多态性两种。
静态多态性:任何序列类型的数据都可以通过+来运算

动态多态性:如图一所示
3、多态性是指就是一个函数实现不同函数或对象的功能。
4、多态性的好处?
4.1增长了程序的灵活性,以不变应万变,无论对象怎么变化我们都可以以同一形式去调用它。
4.2增长了程序的可扩展性,使用者可以创建一个新的对象,但是调用的方式却不会发生变化。四、绑定方法与非绑定方法
1、类中定义的函数分为两大类,一种是有绑定方法的函数,一种是没有绑定方法的函数。
2、有绑定方法的函数
2.1绑定到对象的方法:类中定义的函数属性默认都是绑定到对象上的,绑定给谁,被绑定者来调用就自动将他本身当作
第一个参数传进去。
2.2绑定到类的方法:在类中用classmethod装饰器装饰的函数都是绑定到类上的。不管是类调用还是对象调用都会自动将类
当作第一个参数,自动传入。
3、非绑定方法的函数。
类中的函数用staticmethod装饰器装饰的函数都是么有被绑定的。对象和类都可以调用它,但是不会自动传值。
4、eg:

python基础18 ---多态与绑定方法的更多相关文章
- python 面向对象之多态与绑定方法
多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.AB ...
- python基础之封装与绑定方法
封装 1.什么是封装: 封:属性对外隐藏,但对内开放 装:申请一个名称空间,往里装入一系列名字/属性 2.为什么要封装: 封装数据属性:不让外部使用者直接使用数据,需要类内部开辟一个接口,让外部通过接 ...
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- python基础之序列类型的方法——字符串方法
python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部 ...
- Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)
一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metacl ...
- python基础之多态与多态性、绑定方法和非绑定方法
多态与多态性 多态 多态并不是一个新的知识 多态是指一类事物有多种形态,在类里就是指一个抽象类有多个子类,因而多态的概念依赖于继承 举个栗子:动物有多种形态,人.狗.猫.猪等,python的序列数据类 ...
- python 3 属性查找与绑定方法
1.属性查找 类有两种属性:数据属性和函数属性 (1)类的数据属性是所有对象共享的 #类的数据属性是所有对象共享的,id都一样 class OldboyStudent: school='oldboy' ...
- python 封装,隐藏属性,绑定方法classmethod和staticmethod
[封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内容都隐藏起 ...
- python中类与对象及其绑定方法的定义
面向对象编程 什么是面向对象? 面向过程:将需要解决的问题按步骤划分,一步一步完成每一个步骤,而且 步骤之间有联系. 优点:复杂问题可以分步完成 缺点:扩展性很差,维护性差.如果中间 ...
随机推荐
- jQuery.delegate() 函数详解
delegate()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 即使是执行delegate()函数之后新添加的元素,只要它符合条件,绑定 ...
- Mysql视图的创建及使用
视图理解: 视图又叫虚表.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成. 视 ...
- Linux终端:speedtest_cli检测你的实时带宽速度
你在家(或者办公室)的上传和下载速度如何?你能保证,你支付费用给ISP的同时得到了等价的回报? 要想测试我们因特网连接的速度,当下存在着一些因特网服务,比如说SpeedTest,这是一种可以通过Web ...
- int byte转换
//命令码0x8001转为int为32769,发送时反序 ] { 0x01, 0x80 }; ); //int to byte[] ; byte[] b = BitConverter.GetBytes ...
- Dephi泛型
TArray TEnumerator(抽象) TEnumerable(抽象) 实际使用:TList TQueue TStack TPair TDictionary ,内部都包含 TValueEnume ...
- Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存!!!否则,就会……
注意:Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存! ! ! 然后Project-->Build All/Build Project,再点绿箭头执行.否 ...
- [译]GLUT教程 - 修改菜单
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> Modifying Menus 肯定会有菜单需要被修改的状 ...
- eclipse +cygwin+C++
用Android eclipse做C++开发,一开始提示no binary的错误,貌似是因为没有编译二进制出来,我本机装了cygwin, 在命令台输入gcc,无显示,说明我没有把cygwin/bin的 ...
- Linux驱动platform
platform device<==> platform bus <==> platform driver 转自:platform设备驱动全透析 宋宝华 http://blog ...
- linux 进程线程
linux下进程的最大线程数.进程最大数.进程打开的文件数 ===========最大线程数============== linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_TH ...