码迷,mamicode.com
首页 > 编程语言 > 详细

Python3.7之派生

时间:2020-01-17 11:49:02      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:基础上   调用   from   dem   不能   tac   role   基础   mac   

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之派生

标签:基础上   调用   from   dem   不能   tac   role   基础   mac   

原文地址:https://www.cnblogs.com/rainbow-ran/p/12204865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!