zoukankan      html  css  js  c++  java
  • python_面向对象——对象间的组合关系

    # 由一堆组件构成一个完整的实体,组建本身独立,但又不能自己运行,必须跟宿主组合在一起,运行。
    class Dog:  #
        def __init__(self,name,dog_type,attack_val):
            self.name = name    #姓名
            self.dog_type = dog_type    #种类
            self.attack_val = attack_val  #攻击力
            self.life_val = 100 #生命值
    
    class Person:   #
        def __init__(self,name,sex,attack_val):
            self.name = name    #姓名
            self.sex = sex    #种类
            self.attack_val = attack_val  #攻击力
            self.life_val = 100 #生命值
            self.weapon = Weapon()  #直接实例化武器类
    
        def attack(self,obj,weapon_name,weapon_val):
            agg = weapon_val + self.attack_val  #人的攻击力等于自身攻击力加上武器的攻击之和
            life_val = obj.life_val - agg   #狗的生命值减去人的攻击力,得到狗的剩余生命
            print('{}使用{}攻击了{},{}损失{}点生命值,剩余生命值{}'.format(self.name,weapon_name,obj.name,obj.name,weapon_val,life_val))
    
    
    class Weapon:   #武器
    
        def stick(self):    #打狗棒
            self.name = '打狗棒'
            self.attack_val = 25
            return self.name,self.attack_val
    
        def knife(self):    #屠龙刀
            self.name = '屠龙刀'
            self.attack_val = 40
            return self.name, self.attack_val
    
        def gun(self):    #AK47
            self.name = 'AK47'
            self.attack_val = 40
            return self.name, self.attack_val
    
    d = Dog('小黑','哈士奇',20)  #小黑
    p = Person('wdc','',30)    #wdc
    
    weapon_name,weapon_val = p.weapon.stick()   #使用对象p执行武器类中的方法:这里选择的武器是stick()方法下的"打狗棍"
    p.attack(d,weapon_name,weapon_val)  #执行p对象下的attack(攻击)方法,人攻击狗(狗的对象,武器名称,武器攻击力)
    #切换武器
    # weapon_name,weapon_val = p.weapon.knife()   #使用对象p执行武器类中的方法:这里选择的武器是stick()方法下的"打狗棍"
    # p.attack(d,weapon_name,weapon_val)  #执行p对象下的attack(攻击)方法,人攻击狗(狗的对象,武器名称,武器攻击力)

  • 相关阅读:
    对vue中nextTick()的理解及使用场景说明
    微信小程序的视图与渲染
    1分钟了解微信小程
    Idea搭建Spring+SpringMvc+Mybatis框架集成项目
    idea 新建不了servlet文件 方法(1)
    idea使用大全(加载mysql驱动)
    开发文档规范
    如何架构一个框架
    mac os x
    mongodb rockmongo
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11843204.html
Copyright © 2011-2022 走看看