19 面向对象3: 许三多使用ak47 发射子弹
class Gun: # 初始化属性,model形参,需要定义对象时传递 def __init__(self, model): self.model = model self.buller_count = 0 # 添加子弹方法 ,添加count发子弹 def add_bullet(self, conunt): self.buller_count += conunt print("%s 装载了 %d 发子弹" % (self.model, conunt)) # 定义枪的发射方法 def shoot(self): if self.buller_count == 0: print("%s 没有子弹了" % self.model) return print("%s ---> [%d]" % (self.model, self.buller_count)) class Soldier: def __init__(self, name): # 定义名字属性 self.name = name # 定义gun属性 self.gun = None # None是一个空对象常量 def fire(self): # 判断枪是否有子弹 if self.gun is None: # is 是判断两个变量是对同一个对象引用。== 是判断内容是否相等,这里用is 或者 == 都行 print("【%s】没有枪" % self.name) return print("冲啊 %s" % self.name) # 调用枪装子弹方法 self.gun.add_bullet(30) # 调用枪射击方法 self.gun.shoot() # 创建枪对象ak47 ak47 = Gun("ak47") # 创建士兵对象许三多 xusanduo = Soldier("许三多") # ak47成为许三多的属性 xusanduo.gun = ak47 # xusanduo.fire()