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

  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. MyBatis笔记(六)

    1. 动态SQL 1.1 介绍 概念:**动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句.* 官网描述: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其 ...

  2. 如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app

    上一篇内容:如何快速搭建自己的ERP系统,4步源码快速安装odoo教程 了解什么是odoo的插件模块 odoo在基础的框架代码之下,可以安装自己的应用程序或者业务逻辑,也可以对原有的模块进行二次修改 ...

  3. css — display

    1.定义 display用于页面布局,设置元素如何被显示. 值:none | inline | block | inline-block | list-item | run-in | table | ...

  4. spieces-in-pieces动画编辑器

    前言: 制作灵感来源于 http://species-in-pieces.com/ 这个网站,此网站作者是来自阿姆斯特丹的设计师 Bryan James,其借用纯CSS技术表现出30种濒危动物的碎片拼 ...

  5. 007-Java中方法的使用(基础篇)

    目录 一.方法的基本概述 一.方法的概述 二.方法的语法机制 三.方法的调用 一.方法的基本概述 一.方法的概述   方法其实就是一段可以完成某个特定功能的并且可以被重复利用的代码片段,方法的出现,让 ...

  6. 【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)

    在参考Azure官方文档进行VM创建时,发现其中没有包含如何设置NSG的内容,以及如何在创建时就添加数据磁盘的代码(设置磁盘为SSD类型).本文的内容以"使用 Java 创建和管理 Azur ...

  7. FusionInsight MRS:你的大数据“管家”

    摘要:4月24日-26日,HDC.Cloud2021在深圳大学城成功举办,华为云FusionInsight MRS云原生数据湖带来最懂行的大数据解决方案,为政企客户提供湖仓一体.云原生的大数据解决方案 ...

  8. ELK安装和配置及常用插件安装

    环境 CentOS 7.3 root 用户 JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 以上 关闭 firewall systemctl stop firewalld.serv ...

  9. Dubbo学习笔记(二) Dubbo的基本配置

    Check启动检查 根据之前的学习,我们简单理解的Dubbo远程调用的基本流程,服务提供者注册到注册中心,然后服务消费者通过监听注册中心达到远程调用的目的,那么如果注册中心中没有消费者对应的接口会怎么 ...

  10. php讲转义符号与json文件的趣事情

    php中屡试不爽的数组和json json_encode与json_decode urlencode与urldecode addslashes与stripslashes addcslashes与str ...