python小题目:封装/继承

# 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)

 

posted @ 2020-05-22 15:53  joy小羲  阅读(299)  评论(0)    收藏  举报