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()

 

posted @ 2020-06-11 16:31  abel2020  阅读(332)  评论(0编辑  收藏  举报