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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。