• Python 知识要点:多态


    多态(英语:Polymorphism),是指物件导向程式执行时,相同的讯息可能会送給多个不同的类別之物件,而 系统可依剧物件所属类別,引发对应类別的方法,而有不同的行为。简单来说,所谓多型意指相同的讯息給予不 同的物件会引发不同的动作称之。(维基百科)

    多态,不同的子类对象调用相同的父类方法,产生不同的执行结果。

    例如:1 + 2 >> 3;  "Wor" + "ld" >> "World";  + 可以根据不同的参数类型执行不同的操作,得到不同的结果。

    关于多态,有一个被称作“鸭子类型”(duck typing)的东西,其含义在维基百科中被表述为:

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语 义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由 James Whitcomb Riley 提出的鸭子测试:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

    我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

    class Dog(object):
        def __init__(self, name):
            self.name = name
    
        def game(self):
            print("%s 去接飞盘" % self.name)
    
    
    class XiaoTianDog(Dog):
        def game(self):
            print("%s 飞天" % self.name)
    
    
    class Person(object):
        def __init__(self, name):
            self.name = name
    
        def game_with_dog(self, dog):
            print("%s 和 %s 快乐的玩耍" % (self.name, dog.name))
    
            # 让狗玩耍
            dog.game()
    
    
    # 1.创建一个狗对象
    # 不同的子类对象调用相同的父类方法game
    da_wang = Dog("大旺")
    wang_cai = XiaoTianDog("飞天旺财")
    
    # 2.创建一个小明对象
    xiao_ming = Person("小明")
    
    # 3.让小明调用和狗玩的方法
    xiao_ming.game_with_dog(da_wang)
    xiao_ming.game_with_dog(wang_cai)
    class Animal:
        def __init__(self, name=""):
            self.name = name
    
        def talk(self):
            print("$%^$^$")
    
    
    class Cat(Animal):
        def talk(self):
            print("MiMiMi")
    
    
    class Dog(Animal):
        def talk(self):
            print("WoWoWo")
    
    
    animal = Animal()
    animal.talk()
    
    jack = Cat("Jack")
    jack.talk()
    
    tom = Dog("Tom")
    tom.talk()
    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    multimap-swap
    multimap-size
    multimap-rend
    CentOS的利手:“Screen”一个可以在多个进程之间多路复用一个物理终端的窗口管理器
    对TCP/IP网络协议的深入浅出归纳
    程序员的数学:汉诺塔递归与非递归求解
    多柱汉诺塔问题探究
    汉诺塔问题的递归实现(扩展)
    CentOS---网络配置详解
    VMWare虚拟机下CentOS 配置网络实现远程连接,提供Web访问
  • 原文地址:https://www.cnblogs.com/dc2019/p/13189320.html
Copyright © 2020-2023  润新知