• Python----面向对象--派生


    派生是指子类可以有自己的特有属性,示例代码如下:

     1 class Hero:
     2     def __init__(self, nick_name, life_value, aggresivity):
     3         self.nick_name = nick_name
     4         self.life_value = life_value
     5         self .aggresivity = aggresivity
     6 
     7     def attack(self, enemy):
     8         enemy.life_value -= self.aggresivity
     9 
    10 
    11 class Garen(Hero):
    12     camp = 'Demacia'
    13 
    14 
    15 class Riven(Hero):
    16     camp = 'Noxus'
    17 
    18 
    19 g1 = Garen('草丛伦', 100, 30)
    20 print(g1.camp)

    结果为:

    Demacia

    从结果可以看出,能够访问g1的特有属性camp

    派生属性并不影响正常代码执行:

     1 class Hero:
     2     def __init__(self, nick_name, life_value, aggresivity):
     3         self.nick_name = nick_name
     4         self.life_value = life_value
     5         self .aggresivity = aggresivity
     6 
     7     def attack(self, enemy):
     8         enemy.life_value -= self.aggresivity
     9 
    10 
    11 class Garen(Hero):
    12     camp = 'Demacia'
    13 
    14 
    15 class Riven(Hero):
    16     camp = 'Noxus'
    17 
    18 
    19 g1 = Garen('草丛伦', 100, 30)
    20 r1 = Riven('锐雯雯', 80, 50)
    21 g1.attack(r1)
    22 print(r1.life_value)
    23 
    24 结果为:
    25 50

    在Garen类中添加一个attack函数,会发生什么变化

     1 class Hero:
     2     def __init__(self, nick_name, life_value, aggresivity):
     3         self.nick_name = nick_name
     4         self.life_value = life_value
     5         self .aggresivity = aggresivity
     6 
     7     def attack(self, enemy):
     8         enemy.life_value -= self.aggresivity
     9 
    10 
    11 class Garen(Hero):
    12     camp = 'Demacia'
    13 
    14     def attack(self, enemy):
    15         print('from Garen class')
    16 
    17 
    18 class Riven(Hero):
    19     camp = 'Noxus'
    20 
    21 
    22 g1 = Garen('草丛伦', 100, 30)
    23 r1 = Riven('锐雯雯', 80, 50)
    24 g1.attack(r1)
    25 # print(r1.life_value)
    26 
    27 结果为:
    28 from Garen class

    以上结果说明,属性的查找顺序为对象自身,所属类中依次去查找

  • 相关阅读:
    chapter 12_1 数据文件
    chapter11_3 字符串缓冲
    chapter11_2 Lua链表与队列
    chapter11_1 Lua数组、列表
    chapter9_4 非抢占式的多线程
    Java设计模式
    java内存回收机制
    javaIO流概述
    java集合概述
    java多线程
  • 原文地址:https://www.cnblogs.com/xudachen/p/8592753.html
Copyright © 2020-2023  润新知