zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    异步请求模板和数据
    关于线上js报错问题的思考
    标准web浏览器的组件
    监控图片加载的方法
    图片轮播
    jQuery的一些小技巧()
    setTimeout/setInterval伪异步
    linux/windows java jdk环境配置
    iOS pod 第三方 unrecognized selector sent to instance
    上海4
  • 原文地址:https://www.cnblogs.com/xudachen/p/8592753.html
Copyright © 2011-2022 走看看