python面向对象编程案例分享
python面向对象实例最近整理的一些学习python的基础资料,下面用一个实例来解释面向对象编程,希望对才学习python的朋友有所帮助。题目是开枪打敌人的游戏。具体代码实现如下:#!/usr/bin/python# -*- coding: UTF-8 -*"""@author:li-boss@file_name: mianx.py@create date: 2019-10-31 ...
·
python面向对象实例
最近整理的一些学习python的基础资料,下面用一个实例来解释面向对象编程,希望对才学习python的朋友有所帮助。题目是开枪打敌人的游戏。具体代码实现如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*
"""
@author:li-boss
@file_name: mianx.py
@create date: 2019-10-31 22:27
@blog https://leezhonglin.github.io
@csdn https://blog.csdn.net/qq_33196814
@file_description:
"""
class Person(object):
"""创建一个人类"""
def __init__(self, name):
self._name = name # 人类绑定名字属性
self._gun = None
self._hp = 100
def bulletToClip(self, bullet, clip):
clip.preseBullet(bullet)
def clipToGun(self, gun, clip):
gun.preseClip(clip)
def getGun(self, gun):
self._gun = gun
def __str__(self):
if self._hp > 0:
if self._gun:
return '%s当前血量为:%s,%s' % (self._name, self._hp, self._gun)
else:
return '%s当前血量为:%s,没有枪' % (self._name, self._hp)
else:
return '%s已死亡' % self._name
def fire(self, enemy):
self._gun.hurt(enemy)
def injured(self, hurt):
self._hp -= hurt
class Gun(object):
"""创建一个枪类"""
def __init__(self, name):
self._name = name # 枪类绑定名字属性
self._clip = None
def preseClip(self, clip):
self._clip = clip
def __str__(self):
if self._clip:
return '%s%s' % (self._name, self._clip)
else:
return '%s没有弹夹' % self._name
def hurt(self, enemy):
"""枪从弹夹获取一发子弹"""
if self._clip:
bullet_temp = self._clip.toBullet()
bullet_temp.lethalityToBullet(enemy)
else:
print('没有弹夹')
class Clip(object):
"""创建一个弹夹类"""
def __init__(self, capacity):
self._capacity = capacity # 弹夹的容量
self._listBullet = []
def preseBullet(self, bullet):
self._listBullet.append(bullet)
@property
def listBullet(self):
return self._listBullet
def __str__(self):
return '当前弹夹信息为:%d/%d' % (len(self._listBullet), self._capacity)
def toBullet(self):
if self._listBullet:
return self._listBullet.pop()
else:
return None
class Bullet(object):
"""创建一个子弹对象"""
def __init__(self, lethailty):
self._lethality = lethailty # 子弹的杀伤力
def lethalityToBullet(self, enemy):
enemy.injured(self._lethality)
def main():
"""
流程控制
"""
# 创建一个战士
warrior = Person('战士')
# 创建一个枪的对象
ak47 = Gun('AK47')
# 创建一个弹夹的对象
clip = Clip(50)
# 创建一些子弹的对象
for _ in range(20):
bullet = Bullet(10)
# 战士把子弹装进弹夹
warrior.bulletToClip(bullet, clip)
# 战士把弹夹装进枪
warrior.clipToGun(ak47, clip)
# 战士拿枪
warrior.getGun(ak47)
# 创建一个敌人对象
enemy = Person('敌人')
# 战士开枪打敌人
for _ in range(len(clip.listBullet)):
warrior.fire(enemy)
print(warrior)
print(enemy)
if __name__ == '__main__':
main()
更多推荐
已为社区贡献2条内容
所有评论(0)