Python3.7之派生

Posted 彩虹然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3.7之派生相关的知识,希望对你有一定的参考价值。

Python3.7之派生

子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要一旦重新定义了自己的

属性且与父类重名,那么调用新增的属性时,就以自己为准。

派生就是子类在继承父类的基础上衍生出新的属性。子类中独有的,父类中没有的;或子类定义与父类重名的东

西。子类也叫派生类。

class Hero:
    camp = 'Hero'  # 父类原有的camp数据属性

    def __init__(self, nickname, attack_value, life_value):
        self.nickname = nickname
        self.attack_value = attack_value
        self.life_value = life_value

    def attack(self, enemy):
        enemy.life_value -= self.attack_value


class Garen(Hero):
    camp = 'Demacia'


class Riven(Hero):
    camp = 'Noxus'


role1 = Garen('A', 50, 100)
role2 = Riven('B', 30, 80)
print(role1.camp)
print(role2.camp)
'''
Demacia
Noxus
'''

在子类中,新建的重名的函数属性,在编辑函数内功能的时候,有可能需要重用父类中重名的那个函数功能,应该

是用调用普通函数的方式,即:类名.func(),此时就与调用普通函数无异了,因此即便是self参数也要为其传值。

class Garen(Hero):
    def __init__(self, nickname, attack_value, life_value, skin):
        Hero.__init__(self, nickname, attack_value, life_value)
        # 调用父类功能,注意这里必须要有self
        self.skin = skin  # 新属性

    def attack(self, enemy):
        Hero.attack(self, enemy)  # 调用父类功能,参数必须与父类一致
        print('From Garen')  # 自己新的功能
    camp = 'Demacia'

严格来说,上述Hero.**__init**__(self,...),不能算作子类调用父类的方法。因为我们如果去掉(Hero)这个继承关系,代码仍能得到预期的结果。

以上是关于Python3.7之派生的主要内容,如果未能解决你的问题,请参考以下文章

Python3.7之抽象类与归一化

Python3.7之封装

RT-Thread之入门跑代码

Python3.7之字符串

Python3.7之列表与元组

Python3.7之绑定方法与非绑定方法