• 029. Python多态介绍


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

    1. 继承
    2. 重写

    在不改变原有代码的前提下,实现了不同的效果

    class Soldier():
            # 攻击
            def attack(self):
                    pass
            # 后退
            def back(self):
                    pass
    
    # 陆军
    class Army(Soldier):
            def attack(self):
                    print("[陆军]击鼓进攻")
    
            def back(self):
                    print("[陆军]鸣金撤退")
    
    # 海军
    class Navy(Soldier):
            def attack(self):
                    print("[海军]发射鱼雷")
    
            def back(self):
                    print("[海军]潜入海底")
    
    # 空军
    class AirForce(Soldier):
            def attack(self):
                    print("[空军]空中投弹")
            def back(self):
                    print("[空军]掉头撤退")
    
    # 类的实例化 返回陆军对象
    army_obj = Army()
    # 类的实例化 返回海军对象
    navy_obj = Navy()
    # 类的实例化 返回空军对象
    af_obj = AirForce()
    
    # 各就位准备
    listvar = [army_obj,navy_obj,af_obj]
    
    # 将军下达命令
    sign = True
    while sign:
            strvar = """
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
            """
            print(strvar)
            num = input("将军,请下达您的指令:")
    
    
            if num == "1":
                    for i in listvar:
                            i.attack()
    
            elif num == "2":
                    for i in listvar:
                            i.back()
    
            elif num == "3":
                    for i in listvar:
                            # 如果当前的对象是空军类型的,调用attack方法
                            if isinstance(i,AirForce):
                                    i.attack()
                            # 否则调用back方法
                            else:
                                    i.back()
    
            elif num.upper() == "Q":
                    # sign=False
                    break
    
            else:
                    print("报告长官,风太大,我听不到")

    执行

            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:1
    [陆军]击鼓进攻
    [海军]发射鱼雷
    [空军]空中投弹
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:2
    [陆军]鸣金撤退
    [海军]潜入海底
    [空军]掉头撤退
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:3
    [陆军]鸣金撤退
    [海军]潜入海底
    [空军]空中投弹
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:4
    报告长官,风太大,我听不到
    
            1.全体攻击
            2.全体撤退
            3.空军上,其他人撤退
    
    将军,请下达您的指令:q
  • 相关阅读:
    Linux .bashrc文件设置快速访问快捷键
    Fiddler如何添加ServerIP显示
    软件测试工程师常用工具汇总
    [ASP.NET Core开发实战]基础篇04 主机
    《数据结构与算法之美》24——堆的应用
    [ASP.NET Core开发实战]基础篇03 中间件
    《数据结构与算法之美》23——堆和堆排序
    [ASP.NET Core开发实战]基础篇02 依赖注入
    [ASP.NET Core开发实战]基础篇01 Startup
    [ASP.NET Core开发实战]开篇词
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/12317109.html
Copyright © 2020-2023  润新知