# 由一堆组件构成一个完整的实体,组建本身独立,但又不能自己运行,必须跟宿主组合在一起,运行。
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(攻击)方法,人攻击狗(狗的对象,武器名称,武器攻击力)

最新文章

  1. SQL Linq lamda区别
  2. Sprint(第十二天11.25)
  3. 实践总结 - 不可错过的Angular应用技巧
  4. tomcat连接池配置详解
  5. Lisp 函数
  6. 数据库连接池(DBCP:为数据统一建立一个缓冲池,现在企业开发使用)
  7. 创建带sshd服务的docker image
  8. 错误号码2003 Can't connect to MySQL server 'localhost' (0)
  9. Buffer
  10. 用 Freemarker 生成 word 文档
  11. 【原创】大叔经验分享(7)创建hive表时格式如何选择
  12. Ubuntu 14.04 tomcat配置
  13. Parameter not found的出现的原因
  14. JavaScript进阶系列01,函数的声明,函数参数,函数闭包
  15. Hive学习之路 (十六)Hive分析窗口函数(四) LAG、LEAD、FIRST_VALUE和LAST_VALUE
  16. LA 3268 号码簿分组(最大流+二分)
  17. struts2的动态方法调用(DMI)和通配符映射
  18. 关于ActiveMQ的配置
  19. C#几种常用的加密方式
  20. Linux查看PCIe版本及速率

热门文章

  1. 使用Cython时遇到的cl.exe的问题
  2. zookeeper 操作命令
  3. windows下 安装gitlab及其相关图形管理工具
  4. mysql中information_schema.tables字段说明
  5. PAT甲级 图 相关题_C++题解
  6. jenkinsFile harbor docker优化版
  7. 利用Python进行数据分析_Pandas_绘图和可视化_Matplotlib
  8. 使用内存地址点亮LED—跟51单片机一样写代码教学(初步入门)
  9. (六)lucene之其他查询方式(组合查询,制定数字范围、指定字符串开头)
  10. IDEA如何本机调试springboot应用打的jar包