python_进阶_10


士兵突击

在定义属性时,如果不知道设置什么初始值,可以设置为None

python中针对None比较时, 建议使用is判断

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. 发射子弹, -1
        self.bullet_count -= 1
        # 提示发射信息
        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 判断
        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)

输出为

身份运算符

身份运算符用于比较两个对象的内存地址是否一致 ——是否是对同一个对象的引用

运算符 描述 实例
is 判断两个标识符是不是引用同一个对象 x is y, 类似 id(x) == id(y)
is not 判断两个标识符是不是引用不同对象 x is not y, 类似 id(a) != id(b)

is 与 == 区别

is用于判断两个变量引用对象是否为同一个

==用于判断引用变量的值是否相等


文章作者: 张忠楠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张忠楠 !
评论
 上一篇
python_进阶_11 python_进阶_11
私有属性和私有方法 在实际开发中,对象的某些属性或者方法可能只希望在对象的内部被使用,而不希望在外部被访问到 在定义属性或者方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性和私有方法 class Women:
2020-04-27
下一篇 
python_进阶_09 python_进阶_09
摆放家具 class HouseItem: def __init__(self,name,area): self.name = name self.area = area def __st
2020-04-26
  目录