分装:

  1. 封装是面向对象编程的一大特点
  2. 面向对象编程的第一步:将属性和办法分装到一个形象的类中
  3. 外界应用类创建对象,而后让对象调用办法
  4. 对象办法的细节都被封装在累的外部
    留神:一个对象的属性能够是另外一个类创立的对象

一、士兵突击案例需要剖析

需要:

  1. 士兵张小嘎 有一把 Ak47
  2. 士兵 能够 停火
  3. qiang 可能 发射子弹
  4. qiang 须要 装填子弹----减少子弹数量

依据需要,划分类,共划分两个类,一个是士兵类,一个是qiang类,因为创立士兵类中用到qiang,所以在创立类的时候先创立qiang类。

二、创立qiang类

依据下面的类图表格来创立qiang类。
model是qiang的型号,bullet_count是子弹的数量,add_bullet(self, count)装填子弹办法,Shoot(self)是发射子弹办法。
代码

class Gun():    def __init__(self, model):        # 1. qiang的型号        self.model = model        # 2. 子弹的数量,初始值为0        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))# 1. 创立qiang对象ak47 = Gun("Ak47")# 2. 调用办法ak47.add_bullet(50)ak47.shoot()

执行后果:

三、创立士兵类

假如:每一个士兵都没有qiang
定义没有初始值的属性:
在定义属性时,如果不晓得设置什么初始值,能够设置为None

  1. None关键字示意 什么都没有
  2. 示意一个空对象,没有办法和属性,是一个非凡的常量
  3. 能够将NNone赋值给任何一个变量
    fire办法需要:
  4. 判断是否有qiang,没有枪没方法冲锋
  5. 喊一声口号
  6. 装填子弹
  7. 射击
    代码:
class Gun():    def __init__(self, model):        # 1. qiang的型号        self.model = model        # 2. 子弹的数量,初始值为0        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. qiang = 新兵没有枪        self.gun = None# 1. 创立qiang对象ak47 = Gun("Ak47")# 2. 调用办法ak47.add_bullet(50)ak47.shoot()# 3. 创立士兵对象-张小嘎zhang = Soldier("张小嘎")# 用赋值语句,把ak47交给张小嘎zhang.gun = ak47print(zhang.gun)

执行后果:

四、实现停火办法

代码:

class Gun():    def __init__(self, model):        # 1. qiang的型号        self.model = model        # 2. 子弹的数量,初始值为0        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. qiang = 新兵没有枪        self.gun = None    def fire(self):        # 1. 判断是否有枪        if self.gun == None:            print("[%s]还没有qiang" % self.name)            return        # 2. 高喊冲锋口号        print("冲啊。。。 [%s]" % self.name)        # 3. 装填子弹        self.gun.add_bullet(50)        # 4. 发射子弹射击        self.gun.shoot()# 1. 创立qiang对象ak47 = Gun("Ak47")# 2. 调用办法# ak47.add_bullet(50)# ak47.shoot()# 3. 创立士兵对象-张小嘎zhang = Soldier("张小嘎")# 用赋值语句,把ak47交给张小嘎zhang.gun = ak47zhang.fire()# print(zhang.gun)

执行后果:


以上就是对于面向对象案例士兵突击的剖析和代码演练,次要知识点就是一个对象的属性能够是另外一个类创立的对象,以及关键字None的应用。更多Python练习题能够关注Python自学网,不断更新。www.wakey.com.cn/。