封装
1.封装是面向对象编程的一大特点 2.面向对象编程的第一步 —— 将属性和方法封装到一个抽象的类中 3.外界使用类创建对象,然后让对象调用方法 4.对象方法的细节都被封装在类的内部 一个对象的属性可以是另一个类创建的对象
01.士兵突击
需求 1.士兵 许三多 有一把AK47 2.士兵可以开火 3.枪能够发射子弹 4.枪装填子弹 —— 增加子弹数量
class Gun: def __init__(self,modle): # 1.枪的型号 self.model = modle # 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 # 3.提示发射信息 print("[%s]突突突...[%d]"% (self.model,self.bullet_count)) # 1.创建枪对象 ak47 = Gun("AK47") ak47.add_bullet(50) ak47.shoot()
1.2 开发士兵类
假设:每一个士兵都没有枪 定义没有初始值的属性 在定义属性时,如果不知道设置什么初始值,可以设置为 None None 关键字表示什么都没有 表示一个空对象,没有办法和属性,是一个特别的常量 可以将 None 赋值给任何一个变量 fire 方法需求 1.判断是否有枪,没有枪没法冲击 2.喊一声口号 3.装填子弹 4.射击
class Gun: def __init__(self,modle): # 1.枪的型号 self.model = modle # 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 # 3.提示发射信息 print("[%s]突突突...[%d]"% (self.model,self.bullet_count)) class Soldier: def __init__(self,name): # 1.姓名 self.name = name # 2.枪 - 新兵没有枪 self.gun = None # 1.创建枪对象 ak47 = Gun("AK47") ak47.add_bullet(50) ak47.shoot() # 2.创建许三多 xusanduo = Soldier("许三多") xusanduo.gun = ak47 print(xusanduo.gun)
1.3 士兵开火
class Gun: def __init__(self,modle): # 1.枪的型号 self.model = modle # 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 # 3.提示发射信息 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: print("[%s]还没有枪..."% self.name) return # 2.高喊口号 print("冲啊...[%s]"% self.name) # 3.让枪填满子弹 self.gun.add_bullet(50) # 4.让枪发射子弹 self.gun.shoot() # 1.创建枪对象 ak47 = Gun("AK47") # 2.创建许三多 xusanduo = Soldier("许三多") xusanduo.gun = ak47 xusanduo.fire() print(xusanduo.gun)
小结 1.创建了一个士兵类 2.在定义属性时,如果不知道设置什么初始值,可以设置为 None 3.在封装的方法内部,还可以让自己的使用其他类创建的对象属性调用已经封装好的方法
02.身份运算符
原文地址:https://www.cnblogs.com/chx-python/p/10331656.html
时间: 2024-10-04 10:05:36