029. Python多态介绍
多态:不同的子类对象,调用相同的父类方法,产生不同的结果
- 继承
- 重写
在不改变原有代码的前提下,实现了不同的效果
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 相关推荐
军用气球研究会 2018-01-18
okzhchy 2019-12-26
shineyon 2019-06-03
粗鄙之语 2018-05-09
无人机日常 2018-05-05
扑克投资家 2018-02-19
读书读人读事 2018-02-19
读书读人读事 2018-02-19
世界说 2018-02-16
政见CNPolitics拆掉知识的高墙 2018-02-12
赌书消得泼茶香 2018-02-10
爱燃烧最专业的中文跑步运动社区 2018-02-09
波波夫聊车 2018-01-31
VTEC 2018-01-31
VTEC 2018-01-31
MAGI的专栏 2018-01-31
世界说 2018-01-31
无人机日常 2018-01-31
一群旅行体验师 2018-01-31