多态:多态指的是一类事物有多种形态

多态性:

class Animal:

  def run(self):

    raise AtrributeError("子类必须实现这种方法")

class Person(Animal):

  pass

p = Person()

p.run()

通过父类主动抛出一个异常,告诉你子类中必须自己要写这个方法

改子类如下

class Person(Animal):

  def run(self):

    print("人跑")

再定义几个子类

def Dog(Animal):

  def run(self):

    print("狗跑")

def Pig(Animal):

  def run(self):

    print("猪跑")

person = Person()

dog = Dog()

pig = Pig()

person.run()

dog.run()

pig.run()

上面这就是多态,同属一个父类,但是他们在run这个方法上表现出不能的形态,这就是多态。

那什么是多态性呢?

还是举电脑组装的例子

电脑主机生产商定义了电脑这个类

class Computer():

  def usb_run(self):

    raise AtrributeError("USB设备自己要开发run方法")

def usb_insert(obj):

  obj.run()

class KeyBoard(Computer):

  def usb_run(self):

    print("键盘插入了")

class Mouse(Computer):

  def usb_run(self):

    print("鼠标插入了")

k = KeyBoard()

m = Mouse()

usb_insert(k)

usb_insert(m)

简单理解就是定义了一个函数,函数里执行了多态的共同方法,

但是并不区分是哪个对象传送过来的,具体对象需要通过向函数传递参数实现,这种实现方法就是多态性。

    

python类的多态、多态性的更多相关文章

  1. python类的多态

    1. 什么是多态     多态指的是同一种/类事物的不同形态   2. 为何要用多态     多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象     多态性的精髓:统一   ...

  2. Python 类的多态的运用

    #类的多态的运用 #汽车类 class Car(object): def move(self): print("move ...") #汽车商店类 class CarStore(o ...

  3. Python类的多态的例子

    1 # -*- coding: utf-8 -*- 2 # 类的多态 3 4 # 定义Person父类 5 class Person(object): 6 def __init__(self, nam ...

  4. Python类总结-多态及鸭子类型

    Python天生支持多态. 什么是多态: 一类事务的多种形态. 多态的一个例子 class Alipay(): def pay(self,money): print('用支付宝支付了%s元' % mo ...

  5. Python 类的多态

    #python的多态 class Dog(): def eat(self): print("i am dog , eat something . ") class Cat(): d ...

  6. Python类(四)-多态

    多态即一个接口,多种实现 按照平常直接调用 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" class Person(obje ...

  7. Python之路【第十篇】:Python面向对象之多态、多态性

    阅读目录 一 多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @ab ...

  8. python中对多态和多态性的理解

    python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal( ...

  9. day21-5 类的多态与多态性

    类的多态与多态性 多态 多态指的是一类事物有多种形态,如动物有多种形态:人.狗.猪 import abc class Animal(metaclass=abc.ABCMeta): # 同一类事物:动物 ...

随机推荐

  1. 自动输入密码执行远程服务器上的java -version命令

    自动输入密码执行远程服务器上的java -version命令 for i in $(seq 1 253);do sshpass -p "W123hz" ssh weili@192. ...

  2. java类和对象详解

    类和对象 java 是面向对象的语言 即 万物皆对象c语言是面向过程语言 一.怎么去描述一个对象? (1)..静态的(短时间内不会改变的东西) 例如:外观,颜色,品牌 (2).动态的(动作) 可以干什 ...

  3. mysql插入中文数据变成问号怎么处理

    插入中文数据变成问号,一般都是因为字符集没有设置成utf8的原因 1.修改字符集: ALTER TABLE 表名 MODIFY 列名 类型(50) CHARACTER SET "utf8&q ...

  4. ubuntu18下Docker运行springboot项目

    1.springboot项目打成jar包 mvn install 2.编写Dockerfile # 基础镜像使用java FROM java:8 # 作者 #MAINTAINER sk # VOLUM ...

  5. Ubuntu 下开发ARM

    1. 准备工作 linux下自带虚拟串口的驱动,不需要手动安装.CP2102之类的USB转串口,是ttyUSBx. 所有的设备都在/dev目录下,简单扫描串口的办法: ls /dev > bef ...

  6. 【php设计模式】单例模式

    实现单例的三个关键点: 1.使用一个静态成员来保持一个单例实例 2.一个私有的构造方法使得该类只能在类的内部方法中被实例化 3.在实例化对象的静态方法中,先判断静态变量是否已经被赋值,如果赋值则返回该 ...

  7. hdu 6077多校签到

    #include <iostream> #include <cstdio> using namespace std; ][]; int f(int pos) { ; ;i< ...

  8. springCloud的feign异常:RequestHeader参数为空时,对key加了大括号{}

    好久没写博客了,今天趁着周末把工作中遇到的问题梳理一下(在这个问题排查过程中,发现自己排查问题的能力还是太弱了,需要加强). 最近在公司springCloud的项目里,通过feign远程调用其他服务, ...

  9. LeetCode 腾讯精选50题--2的幂

    在二进制中,2的幂的数字用二进制表示时只会有一位表示为1,其余都为0,基于这个前提,可以有两种方案: 1. 做位移操作 2. 与数值取反并与原数值做与操作,判断是否与原来的数值相同 对于方案1,我的想 ...

  10. 一种无法被Dump的jar包加密保护解决方案

    作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: windwos10.I ...