Python面向对象封装操作案例详解 II
本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下:
目标
士兵突击案例
身份运算符
封装
封装是面向对象编程的一大特点
面向对象编程的第一步——将属性和方法封装到一个抽象的类中
外界使用类创建对象,然后让对象调用方法
对象方法的细节都被封装在类的内部
一个对象的属性可以是另外一个类创建的对象
01.士兵突击
需求
士兵许三多有一把AK47
士兵可以开火
枪能够发射子弹
枪装填装填子弹——增加子弹数量
1.1开发枪类
shoot方法需求
1>判断是否有子弹,没有子弹无法射击
2>使用print提示射击,并且输出子弹数量
classGun: def__init__(self,model): #枪的型号 self.model=model #子弹数量 self.bullet_count=0 defadd_bullet(self,count): self.bullet_count+=count defshoot(self): #判断是否还有子弹 ifself.bullet_count<=0: print("没有子弹了...") return #发射一颗子弹 self.bullet_count-=1 print("%s发射子弹[%d]..."%(self.model,self.bullet_count)) #创建枪对象 ak47=Gun("ak47") ak47.add_bullet(50) ak47.shoot()
1.2开发士兵类
假设:每一个新兵都没有枪
定义没有初始值的属性
在定义属性时,如果不知道设置什么初始值,可以设置为None
None关键字表示什么都没有
表示一个空对象,没有方法和属性,是一个特殊的常量
可以将None赋值给任何一个变量
fire方法需求
1>判断是否有枪,没有枪没法冲锋
2>喊一声口号
3>装填子弹
4>射击
classSoldier: def__init__(self,name): #姓名 self.name=name #枪,士兵初始没有枪None关键字表示什么都没有 self.gun=None deffire(self): #1.判断士兵是否有枪 ifself.gunisNone: print("[%s]还没有枪..."%self.name) return #2.高喊口号 print("冲啊...[%s]"%self.name) #3.让枪装填子弹 self.gun.add_bullet(50) #4.让枪发射子弹 self.gun.shoot()
小结
创建了一个士兵类,使用到init内置方法
在定义属性时,如果不知道设置什么初始值,可以设置为None
在封装的方法内部,还可以让自己的使用其他类创建的对象属性调用已经封装好的方法
02.身份运算符
身份运算符用于比较两个对象的内存地址是否一致——是否是对同一个对象的引用
在Python中针对None比较时,建议使用is判断
is与==区别:
is用于判断两个变量引用对象是否为同一个
==用于判断引用变量的值是否相等
>>>a=[1,2,3] >>>b=[1,2,3] >>>bisa False >>>b==a True
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。