上代码,代码中有解释
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, number): #方法:射击
if self.bullet_count <= 15 : #判断子弹都不够(假设15发以内就不够)
print('%s子弹不够了' %(self.model))
return #如果不够就直接返回不再执行
self.bullet_count -= number #如果够就射击(每次射击的子弹数目由外部给入)
class Soldier : #定义士兵类
def __init__(self, name): #士兵的属性有名字、是否有枪
self.name = name
self.gun = None #刚开始定义士兵没枪
def fire(self): #方法:开火
if self.gun is None : #先判断士兵是否有枪(用is判断非数值的属性)
print('%s 没有枪!' %(self.name))
return
self.gun.add_bullet(60) #添加子弹,调用枪的添加子弹方法
print('%s使用%s射击!!' % (self.name, self.gun.model)) #给出命令
self.gun.shoot(15) #射击,调用枪类的射击方法
print('还剩%.f发子弹' % (self.gun.bullet_count)) #告诉我们还剩多少发子弹
UZI = Gun('UZI') #先来把枪
soldier = Soldier('hero') #再来个兵
soldier.gun = UZI #把枪给兵,如果没给就运行,程序会提示没有枪
soldier.fire() #调用开火方法
执行结果为
hero使用UZI射击!!
还剩45发子弹