zoukankan      html  css  js  c++  java
  • 面向对象-子类重用父类同名方法或同名属性

    子类中派生出的新的方法重用父类的方法

    方式一:指名道姓,不依赖继承

    指名道姓的调用,不依赖继承

    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggersivity=aggresivity
        def attack(selfs,enemy):
            enemy.life_value -= selfs.aggersivity
    
    class Garen(Hero):
        camp='Demacia'
        def attack(selfs,enemy):
            Hero.attack(selfs,enemy)#指名道姓的调用,不依赖继承
            print("grom Garen Class")
    class Riven(Hero):
        camp='Noxus'
    g=Garen('草丛伦',100,30)
    r=Riven("锐雯雯",90,40)
    
    print(r.life_value)
    g.attack(r)
    print(r.life_value)

    子类初始化的对象调用父类方法

    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggersivity=aggresivity
        def attack(selfs,enemy):
            enemy.life_value -= selfs.aggersivity
    
    class Garen(Hero):
        camp='Demacia'
        def __init__(self,nickname,life_value,aggresivity,weapon):
            Hero.__init__(self,nickname,life_value,aggresivity)#指名道姓的调用,子类派生的新的方法调用父类方法,不依赖继承
            self.weapon=weapon
        def attack(selfs,enemy):
            Hero.attack(selfs,enemy)#指名道姓的调用,不依赖继承
            print("grom Garen Class")
    
    g=Garen('草丛伦',100,30,'金箍棒')

    方式二:super()方法引用父类方法,依赖继承

    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggersivity=aggresivity
        def attack(selfs,enemy):
            enemy.life_value -= selfs.aggersivity
    
    class Garen(Hero):
        def attack(self,enemy):
            super(Garen,self).attack(enemy)#super()依赖继承
            print("grom Garen Class")
    class Riven(Hero):
        pass
    g=Garen('草丛伦',100,30)
    r=Riven('锐雯雯',80,50)
    print(r.life_value)
    g.attack(r)
    print(r.life_value)

    class Hero:
        def __init__(self,nickname,life_value,aggresivity):
            self.nickname=nickname
            self.life_value=life_value
            self.aggersivity=aggresivity
        def attack(selfs,enemy):
            enemy.life_value -= selfs.aggersivity
    
    class Garen(Hero):
        def __init__(self,nickname,life_value,aggresivity,weapon):   
            super(Garen,self).__init__(nickname,life_value,aggresivity)#super(Garen,self)表示绑定方法,所以执行__init__无需传入self参数
            self.weapon=weapon
        def attack(self,enemy):
            super(Garen,self).attack(enemy)#super()依赖继承
            print("grom Garen Class")
    class Riven(Hero):
        pass
    g=Garen('草丛伦',100,30,"金箍棒")
    print(g.__dict__)

  • 相关阅读:
    Kubernetes Jenkins动态创建Slave
    运维故障汇总
    Spinnaker调用Jenkins API 返回403错误
    linux删除文件空间不释放问题解决
    华为 路由交换之DHCP
    华为 路由交换之PPPoE
    关于==和equals的探索
    springboot&mybatis 增删改查系列(二)
    springboot&mybatis 增删改查系列(一)
    nginx简单使用(windows)
  • 原文地址:https://www.cnblogs.com/yaya625202/p/8870280.html
Copyright © 2011-2022 走看看