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

  • 相关阅读:
    Oracle 更改DBID
    Oracle 修改字段长度
    Oracle 索引
    Oracle在无法打开数据库的状态下获取DBID
    Oracle 备份脚本
    Linux crontab计划任务
    Oracle restore和recovery的区别
    Django基础
    面向对象(一)
    socket
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11843204.html
Copyright © 2011-2022 走看看