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(攻击)方法,人攻击狗(狗的对象,武器名称,武器攻击力)

  • 相关阅读:
    2.4 自给自足的脚本:位于第一行的#!
    2.3 一个简单的脚本
    2.2 为什么要使用Shell脚本
    JSON 字符串 与 java 对象的转换
    ajax异步提交文件
    jquery选择器
    发现前端框架 bui-min.js
    学习hsf
    Git详解
    java学习材料
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11843204.html
Copyright © 2011-2022 走看看