# 3、封装一个英雄类:有姓名、职业、性别
# 封装一个抽象类:技能1、技能2、技能3
# 要求:在子类 刺客、法师 类中 完成英雄类属性的初始化,且重写技能1、技能2、技能3
from abc import ABCMeta, abstractmethod
class Hero(metaclass=ABCMeta):
@abstractmethod # 子类必须把所有@abstractmethod标注的抽象方法都重写
# 技能1
def skill_one(self,skill):
pass
# 技能2
@abstractmethod
def skill_two(self):
pass
#技能3
@abstractmethod
def skill_three(self):
pass
# 法师子类
class Son_Hero_Master(Hero):
def __init__(self, name, job, sex):
self.name = name
self.job = job
self.sex = sex
def skill_one(self,skill_one):
print(self.name,'是',self.job,',他的一技能是:',skill_one)
def skill_three(self,skill_three):
print('他的大招是:',skill_three)
def skill_two(self,skill_two):
print('他的二技能是:',skill_two)
# 刺客子类
class Son_Hero_Assassin(Hero):
def __init__(self, name, job, sex):
self.name = name
self.job = job
self.sex = sex
def skill_one(self,skill_one):
print(self.name,'是',self.job,',他的大招是:',skill_one)
def skill_two(self,skill_two):
print('他的二技能是:',skill_two)
def skill_three(self,skill_three):
print('他的一技能是:',skill_three)
son_hero_master = Son_Hero_Master('周瑜','法师','帅哥')
son_hero_master.skill_one('吹风')
son_hero_master.skill_three('喷火')
son_hero_master.skill_two('放火')
print('*'*50)
son_hero_assassin = Son_Hero_Assassin('阿珂','刺客','美女')
son_hero_assassin.skill_one('隐身杀人')
son_hero_assassin.skill_two('位移')
son_hero_assassin.skill_three('增速攻击')
#多继承
class Father1():
def __init__(self,age,sex):
self.age = age
self.sex = sex
class Father2():
def __init__(self, height):
self.height = height
def money(self):
print('儿子会花钱')
class Father3():
def __init__(self, hair):
self.hair = hair
class Son(Father1,Father2,Father3):
def __init__(self,age,sex,height,hair,smile):
#实例属性自己初始化
self.smile = smile
# 需要明确告诉程序__init__()
# 函数是来自于哪一个父类,通过类名
Father1.__init__(self,age,sex)
Father2.__init__(self,height)
Father3.__init__(self, hair)
def son_info(self):
print(self.age,self.sex,self.height,self.hair,self.smile)
son = Son(10,'男',122,'长发','微笑')
son.son_info()
#实例化子类 ,子类继承了父类,可以通过实例化来调用父类的方法
son.money()
# 4、封装一个列表类,实现列表追加、根据索引删除(如果索引越界就给出提示信息)、元素插入的功能
class List:
def __init__(self,list_one):
self.list_one = list_one
def exteng_list(self,list_two):
self.list_one.extend(list_two)
print('元素合并的结果为:',self.list_one)
def pop(self,index_num):
if index_num < len(self.list_one):
self.list_one.pop(index_num)
print('列表删除除索引%d' % index_num + '后,结果为:',self.list_one)
else:
print('您输入的索引值已超限!')
def insert(self,ele,index_loca):
self.list_one.insert(index_loca,ele) # insert(插入的元素,索引)
print('插入元素后,列表为:',self.list_one)
list_test = List(list_one=[1,3,4,5])
list_test.exteng_list(list_two=[3,7,8,5])
# 根据索引值删除元素
list_test.pop(8)
# 传入需要插入的元素和索引
list_test.insert(5,-1)