分包:封装是面向对象编程的一大特点面向对象编程的第一步:将属性和方法包装成一个抽象类外部使用类创建一个对象,然后让对象调用方法。对象方法的细节都封装在tired里面了。注意:一个对象的属性可以是另一个类创建的对象。1.士兵突击案例需求分析需求:士兵张晓嘎有一把Ak47士兵枪,可以开火。枪可以发射子弹。枪需要上膛。增加子弹数量。根据需要,将班级分为两个班级。一个是士兵类,一个是枪类。由于枪是在创建士兵类时使用的,所以在创建类时,先创建枪类。2.创建qiang类根据上面的类图表创建qiang类。model是枪的型号,bullet_count是子弹的数量,add_bullet(self,count)是装子弹的方法,Shoot(self)是发射子弹的方法。代码:classGun():def__init__(self,model):#1.qiang的模型self.model=model#2.子弹数量,初始值为0self.bullet_count=0defadd_bullet(self,count):self.bullet_count+=countdefshoot(self):#1.判断子弹数量ifself.bullet_count<=0:print("[%s]hasnobullets"%self.model)return#2.shootbullets,-1self.bullet_count-=1#提示发射信息print("[%s]chugchug...[%d]"%(self.model,self.bullet_count))#1.创建枪支对象ak47=Gun("Ak47")#2.调用方法ak47.add_bullet(50)ak47.shoot()执行结果:3、创建一个士兵类假设:每个士兵都没有gung定义一个没有初始值的属性:定义一个属性时,如果不知道设置什么初始值,可以设置为NoneNone关键字表示nothing表示an空对象,没有方法,Attribute是一个特殊的常量,可以将NNone赋值给任意变量fire方法要求:判断有没有枪,没有枪,没办法冲锋,喊口号,装子弹,开枪代码:classGun():def__init__(self,model):#1.qiang的模型self.model=model#2.子弹数量,初始值为0self.bullet_count=0defadd_bullet(self,count):self.bullet_count+=countdefshoot(self):#1.确定子弹数量ifself.bullet_count<=0:print("[%s]hasnobullets"%self.model)return#2.发射子弹,-1自我.bullet_count-=1#提示启动信息print("[%s]%s]chugchug...[%d]"%(self.model,self.bullet_count))classSoldier():def__init__(self,name):#1.nameself.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)执行结果:4.完成开火方法代码:classGun():def__init__(self,model):#1.qiangmodelself.model=model#2.子弹数量,初始值为0self.bullet_count=0defadd_bullet(self,count):self.bullet_count+=countdefshoot(self):#1.确定子弹数量ifself.bullet_count<=0:print("[%s]hasnobullets"%self.model)return#2.发射子弹,-1self.bullet_count-=1#提示发射信息print("[%s]突突...[%d]"%(self.model,self.bullet_count))classSoldier():def__init__(self,name):#1.nameself.name=name#2.qiang=无枪招募self.gun=Nonedeffire(self):#1.判断是否有枪ifself.gun==None:print("[%s]hasnogun"%self.name)return#2.喊冲锋口号print("ChargeAh...[%s]"%self.name)#3.加载子弹self.gun.add_bullet(50)#4.发射子弹并射击self.gun.shoot()#1.创建枪支对象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/。
