python士兵与枪两种类连接使用

class Soldier:
    def __init__(self,name):
        self.name=name
        self.gun=None   #####这里先设为None  等枪示例化后再给
    def __str__(self):
        return '士兵%s有一把%s,%s。'%(self.name,self.gun.model,self.gun)  
            #这里gun.model为枪名字 gun为gun类的str
    def fire(self):
        if self.gun==None:
            print("没有武器!")
            return False
        self.gun.add_bullet(10)
        self.gun.shoot()
        return True

class gun:
    def __init__(self,model,bullet_count=0):
        self.model=model
        self.bullet_count=bullet_count
    def __str__(self):
        return '这把%s剩余%d子弹'%(self.model,self.bullet_count)
    def shoot(self):
        if self.bullet_count==0:
            return False
        self.bullet_count-=1
        print('发射一颗子弹')
        return True
    def add_bullet(self,count):
        self.bullet_count+=count
        print('填充%d颗子弹'%count)
        return True

B = gun('AK-47') #填充30颗子弹
B.add_bullet(30) #发射一颗子弹
B.shoot()            #射击
A=Soldier('瑞恩')  #发射一颗子弹
A.gun=B           #将实例化的枪给士兵
A.fire()            #士兵开火
print(A)            ##士兵瑞恩有一把AK-47,这把AK-47剩余38子弹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值