python士兵突击_03_士兵开火

class Gun:

    def __init__(self, model):
        # 1. 枪的型号
        self.model = model
        # 2. 子弹的数量
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        # 1. 判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了..." % self.model)
            return
        # 2. 发射子弹
        self.bullet_count -= 1
        # 3. 提示发射信息
        print("[%s]突突突...[%d]" % (self.model, self.bullet_count))


class Soldier:

    def __init__(self, name):
        # 1. 姓名
        self.name = name
        # 2. 枪 - 新兵没有枪
        self.gun = None

    def fire(self):
        # 1. 判断士兵是否有枪
        # if self.gun == None:
        """
        身份远算符用于比较两个对象的内存地址是否一致(是否是同一个对象的引用)
        在python中针对None比较时,建议使用is判断

        is:判断两个标识符是不是引用同一个对象(x is y,类似id(x) == id(y))
        is not:判断两个标识符是不是引用同一个对象(x is not y,类似id(x) != id(y))

        is和==的区别:
        is用于判断两个变量引用对象是否为同一个
        ==用于判断引用变量的值是否相等
        """
        if self.gun is None:
            print("【%s】还没有枪..." % self.name)
            return
        # 2. 高喊口号
        print("冲啊...[%s]" % self.name)
        # 3. 装填子弹
        self.gun.add_bullet(50)
        # 4. 开枪
        self.gun.shoot()


ak47 = Gun("AK47")

xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值