多态及多态性和鸭子类型

多态及多态性

啥是多态?

指的是同一类/种事物的不同形态(其实就是继承关系的表现)

多态只是一种格式形态,它的主要体现是多态性,理解多态性的含义,就明白了多态。

把多态比喻为人的顽固,多态性就相当于人的顽固性。

那多态性在类中的表现形式是怎样的呢?

class Animal():    def run(self):        print('run fast')

class mouse(Animal):    def sound(self):        print('5555')

obj=mouse()    #你看,这里是在mouse类中进行了实例化,但下面的obj调用的run()在mouse类中并不存在         #我们自然而然就会想到mouse继承了Animal,所以obj会跑到Animal类中去找run()这个函数         #为什么程序会通过.run()自己自动跑到父类里面去找,这就是多态提供的。
obj.run()

多态性:在多态的背景下,可以在不用考虑对象具体类型(也就是不管是子类还是父类中存在这种方法)的前提下而直接使用对象

多态性的精髓:统一(统一方法。继承关系下,子类方便调用父类中的方法)

当然,导入abc模块,能够让子类强制执行父类的功能(也就是子类自己有该方法,但只要父类中也有,子类就必须用父类的。有点不讲道理,所以用的比较少)

import abc #abstract class
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def eat(self):
pass

@abc.abstractmethod
def drink(self):
pass

@abc.abstractmethod
def run(self):
pass

@abc.abstractmethod
def bark(self):
pass

# obj=Animal() # 抽象基类本身不能被实例化

class Cat(Animal):
def eat(self):
print('cat eat')

def drink(self):
print('cat drink')

def run(self):
print('cat run')

def bark(self):
print('喵喵喵')

c=Cat()

View Code

扩展(Python统一思想----一切皆对象,Linux统一思想----一切皆文件)

鸭子类型

python是比较崇尚鸭子类型的,目的也是也是和多态一样,为了统一。只不过鸭子类型统一代码的格式。

例子一(这是非常经典的一个例子):

class Duck():
  def walk(self):
    print('I walk like a duck')
  def swim(self):
    print('i swim like a duck')

class Person():
  def walk(self):
    print('this one walk like a duck')
  def swim(self):
    print('this man swim like a duck')

View Code

例子二:

class Disk:

    def read(self):

        print('Disk read')

    def write(self):

        print('Disk write')

class Memory:

    def read(self):

        print('Mem read')

    def write(self):

        print('Mem write')

class Cpu:

    def read(self):

        print('Cpu read')

    def write(self):

        print('Cpu write')

obj1=Disk()

obj2=Memory()

obj3=Cpu()

obj1.read()

obj2.read()

obj3.read()

View Code

(0)

相关推荐

  • Python中的多态如何理解?

    Python中多态的作用 让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数. Python中多态的特点 1.只关心对象的实例方法是否同名,不关心对象所属的类型 ...

  • 面向对象的详细解读

      面向对象的详细解读 一.基本概念 1. 面向过程 (1) 概念:以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. (2 ...

  • 常见的染色体多态性的类型有哪几种?有哪些临床意义?

    染色体多态性是染色体异染色质区域一种微小而恒定的变异,包括结构.带纹宽窄.着色强度等方面的变异,常发生于1.9.16号染色体,D.G组染色体,以及Y染色体.近年来,染色体多态性与生殖方面的关系日益受到 ...

  • Java多态性:Java什么是多态?

    多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义. 对面向对象来说 ...

  • 旅界专研 | 文旅企业类型的再划分与战略再定位(下篇)

    编者按:随着原国家旅游局和文化部合并成立新的文化和旅游部.国家自然资源部的组建,以及国家公园.国家文化公园的创建,国有旅游景区门票下降政策的普遍实施,叠加宏观经济下行.资本市场去杠杆以及新冠肺炎疫情的 ...

  • 人MTHFR基因多态性检测试剂盒(荧光PCR法)简介

    产品介绍 [注册证编号]:国械注准20173403239 [产品规格]:30人份/盒 [存储条件]:1.-20±3℃避光保存,有效期10个月 2.试剂盒在-16℃~8℃的温度范围内运输,运输时间不超过 ...

  • 明茨伯格认为成功组织的5种结构类型

    金融服务公司以严格的程序和严格的控制系统而闻名,大型组织合并以实现"协同效应",但有时也会将部门划分为多个独立更敏捷的公司.为什么这些组织如此不同? 之所以如此多样化,是因为组织的 ...

  • 陈兴良新作品:网络犯罪的类型及其司法认定

    作者:陈兴良,北京大学博雅讲席教授.博士生导师 来源:法治研究杂志社微信公号,原文载<法治研究>2021年第3期. <法治研究>系浙江省政法委主管.浙江省法学会主办,cssci ...

  • 组织常见的5种“敬业”员工类型

    进步型的组织越来越关注于改进他们的人才管理策略,以有效地管理多世代人聚合在一起的员工,从而在数字化时代保持竞争力.这个举措的一个重要方面是组织拥有更多敬业的员工,确保员工在保持绩效方面的内在动力是超越 ...

  • 鸭子这样做太好吃了,比白切鸭还好吃,做法简单,学会过年露一手

    鸭子这样做太好吃了,比白切鸭还好吃,做法简单,学会过年露一手

  • 6.13复盘:你是哪一种资金类型?

    竞价看方向,喜新厌旧是资金永恒的偏好,那么当看到路畅科技平开的时候,你应该知道今天CDR方向不能去做了,也就可以避免京泉华的大面.记住,今天的京泉华和昨天的路畅科技,都是板块出现多个跌停时出现逆势,这 ...