zoukankan      html  css  js  c++  java
  • 面向对象-在子类使用父类的对象或属性

    在子类派生出的新方法中 重用父类分方法,有2种

    1、指名道姓(不依赖继承)   2、super()依赖继承

    在子类派生出的新方法中 重用父类分方法,有2种
    #1、指名道姓(不依赖与继承)
    
    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggresivity=aggresivity
        def attack(self,enemy):
            enemy.life_value -= self.aggresivity
    
    
    class Garen(Hero):
        camp='Demacia' # 自己派生
    
        def attack(self,enemy):
            Hero.attack(self,enemy) # 指名道姓使用父类(在子类有方法情况下)
            print('ssss')
    
    
    class Reven(Hero):
        camp = 'Noxus'
        def __init__(self,nickname,life_value,aggresivity,weapon): #增加武器
            Hero.__init__(self,nickname,life_value,aggresivity) # 其他引用父类
    
            self.weapon = weapon # 自己单独 增加 武器这个属性
    
    
    g=Garen('草丛伦',100,30)
    r=Reven('瑞文',80,50)
    
    print(r.life_value)
    g.attack(r)
    print(r.life_value)
    
    #2、super() (依赖于继承) :引用所在位置,mro列表中下一个值
    
    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggresivity=aggresivity
        def attack(self,enemy):
            enemy.life_value -= self.aggresivity
    
    
    class Garen(Hero):
        camp='Demacia' # 自己派生
        def __init__(self,nickname,life_value,aggresivity,weapon):
            super().__init__(nickname,life_value,aggresivity) # 引用父类的代码
            self.weapon = weapon
        def attack(self,enemy):
            super(Garen,self).attack(enemy)# 核心:依赖于继承
            print('from Garen Class')
    
    
    class Reven(Hero):
        camp = 'Noxus'
    
    
    g = Garen('草丛伦',100,30,'胫骨帮')
    r = Reven('芮雯雯',80,50)
    
    g.attack(r)
    print(r.life_value)
    print(g.__dict__)
  • 相关阅读:
    英文词频统计
    字符串练习
    第八周
    第七周
    第五周
    第六周
    第三周
    第四周
    第二周
    第一周作业
  • 原文地址:https://www.cnblogs.com/hexiaorui123/p/10201404.html
Copyright © 2011-2022 走看看