面向对象-在子类使用父类的对象或属性
在子类派生出的新方法中 重用父类分方法,有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__)