Python中类的封装:一个对象的属性可以是另外一个类型创建的对象

Python中类的封装:一个对象的属性可以是另外一个类型创建的对象

需求如下:
士兵 许三多 有一把 AK47
士兵 可以 开火
枪 能够 发射 子弹
枪 装填 装填子弹 —— 增加子弹数量

分析如下:
士兵 许三多 需要创建一个类:士兵类(Soldier),实例化出许三多这个对象,并且士兵的属性有name和gun
士兵 可以 开火 说明士兵类有一个方法:fire(开火)

有一把 AK47 说明需要一个枪类,实例化出一个枪对象
AK47 增加子弹数量 说明枪类中有两个属性:model(枪类)和buttet_count(子弹数);
枪 能够 发射 子弹 枪 装填 装填子弹 —— 增加子弹数量 说明Gun类有两个方法:add_buttet(装填子弹)和shoot(发射)。

在这里插入图片描述
代码设计

class Gun:
      def __init__(self,model):
      #枪的类型
          self.model = model
      #枪的子弹数量
          self.bullet_count = 0
     def  add_bullet(self,count):
          self.bullet_count +=count
     def  shoot(self):
         #判断子弹数量
         if self.bullet_count <= 0
            print("[%s]没有子弹了..."%self.model) 
            return
         #子弹数量减1
         self.bullet_count -=1
         #打印提示信息
         print("[%s]突。。。[%d]" %(self.model,self.bullet_count))
#对象实例化
AK = Gun("AK47")
#调用方法添加子弹
AK.add_bullet(50)
#射击
AK.shoot()

#输出
#[AK47]突。。。[49]



接下来定义一个士兵类:
代码如下:

class Soldier:
      def __init__(self,name):
          self.name = name
          self.gun = None
      def Fire():
          #判断士兵是否有枪
          if self.gun = None
             print("我没有枪")
          return 
          #2高喊口号
          print("%s冲啊"%self.name)
          #3让枪装填子弹
          self.gun.addbullet(50)
          #4让枪射击
          self.gun.shoot()
#实例化对象
xusanduo = Soldier("许三多")
xusanduo.gun = AK  #此处将AK这个对象赋值给xusanduo 的gun属性
xusanduo.fire()



文章参考链接
如有侵权,敬请联系删除

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值