面对对象编程之对象之间的交互

这是一个猫狗大战的例子

# 猫类
class Cat:
def __init__(self, name, hp, attack):
self.name = name # 名字
self.hp = hp # 血量
self.attack = attack # 攻击力 # 猫的攻击:挠
def catch(self, dog_obj):
if dog_obj.hp == 0:
print(f"{dog_obj.name}:ヾ(。`Д´。)血槽空了!")
print(f"{self.name}:愚蠢的生物!")
return True
else: if dog_obj.hp >= self.attack:
dog_obj.hp -= self.attack
print(f"cat:{self.name}发动攻击,dog的血槽还剩:{dog_obj.hp}!")
return False
else:
print(f"cat:{self.name}发动攻击,dog的血槽还剩:0!")
print(f"{dog_obj.name}:ヾ(。`Д´。)血槽空了!")
print(f"{self.name}:愚蠢的生物!")
return True # 狗类
class Dog:
def __init__(self, name, hp, attack):
self.name = name # 名字
self.hp = hp # 血量
self.attack = attack # 攻击力 # 狗的攻击:咬
def bite(self, cat_obj):
if cat_obj.hp == 0:
print(f"{cat_obj.name}:ヾ(。`Д´。)血槽空了!")
print(f"{self.name}:渺小的猫科动物!")
return True
else:
if cat_obj.hp >= self.attack:
cat_obj.hp -= self.attack
print(f"dog:{self.name}发动攻击,cat的血槽还剩:{cat_obj.hp}!")
return False
else:
print(f"dog:{self.name}发动攻击,cat的血槽还剩:0!")
print(f"{cat_obj.name}:ヾ(。`Д´。)血槽空了!")
print(f"{self.name}:渺小的猫科动物!")
return True # 创建一只加菲猫
cat_graf = Cat("garfield", 900, 350)
# 创建一只欧恩狗
dog_oen = Dog("oen", 900, 400)
print("明明是美好的一天,加菲又开始跟欧恩互殴了,让我们来看看谁赢了!")
while True:
cat_res = cat_graf.catch(dog_oen)
if cat_res:
break
dog_res = dog_oen.bite(cat_graf)
if dog_res:
break

python基础之对象之间的交互的更多相关文章

  1. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  2. python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间

    一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东 ...

  3. python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)

    一.对象之间的交互 现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人.现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法.有了狗类,我们还 ...

  4. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  5. 设计模式系列之中介者模式(Mediator Pattern)——协调多个对象之间的交互

    说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...

  6. objectiv-c所有对象之间的交互是如何实现的?

    在对象间交互中每个对象承担不同的角色,总的来说就是“数据发送者”和“数据接收者”两个角色.可以通过objective-c中给我们提供的手段来实现两者间的通讯.比如: “通知中心”NSNotificat ...

  7. python之 《进程之间数据交互和进程池》

    1.进程q 进程呢就相当于一个房子,线程就相当于是房子里面在工作的人,那么一个房子的空间对于房子里面的人来说是共享的, 现在是多进程,也就是说有许多房子,很显然这个房子的空间只属于这个房子,不会属于其 ...

  8. 2015/8/28 Python基础(2):对象

    Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: > ...

  9. python基础-12 多线程queue 线程交互event 线程锁 自定义线程池 进程 进程锁 进程池 进程交互数据资源共享

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

随机推荐

  1. 引入jquery时,页面一直加载

    注意jquery的引用位置最好放在<head>下面.

  2. 创建、查看、删除计划任务at命令举例

    1.三天后的下午 5 点执行 /bin/ls : at 5pm + 3 days at> /bin/ls             结束按ctrl+d 查看计划任务:at -l 之后 at -c ...

  3. selenium--浏览器窗口截图

    前戏 在进行web自动化的时候,只有一个报错信息是不行的,往往需要截图来帮助我们来快速的定位问题,试想一下,我们在一个弹框里添加一些数据,点击保存后,然后在操作元素,这时selenium报错,说找不到 ...

  4. 牛客NOIP暑期七天营-提高组1

    牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子. 但是边权不为0 除了第一个有0的不行. x连向上一个比他小的数. 期间判断有无解. #include <bits/std ...

  5. Kdtree原理以及 vs Octree

    1. Kdtree原理 Kdtree是一种划分k维数据空间的数据结构,本质也是一颗二叉树,只不过每个节点的数据都是k维,当k=1时,就是图1所示的普通二叉树. 图1 1)Kdtree的建立 建立Kdt ...

  6. 图文详解如何使用VMWare创建一套虚拟机“集群”

    开篇废话 在学习各种高大上的大数据产品也好,模拟部署我们的程序到PRD环境也好,总离不开需要一个机器集群.然而通常我们都没有那么多银子去购买多台云服务器,更没钱购买物理机.所以对于技术研究来说,最经济 ...

  7. 记遇到的Release和Debug下有些不同

    平常开发用Debug,但是发布的时候用Release,应该是很多单位都会用的,但是有的时候你发现Debug下好使,Release下不好使,这就遇到坑了. 我也是这两天连续遇到了两次,在此记录一下,如果 ...

  8. kafka shell

    停止 ./bin/kafka-server-stop.sh  启动 nohup sh kafka-server-start.sh ../config/server.properties & 创 ...

  9. 文本编辑 工具vim

    一vim的3种常用模式:一般模式.编辑模式和命令模式 如果系统里没有vim工具,需安装 1,一般模式 首先复制一个文件到/tmp/目录下,并改名为1,txt 移动光标: h 或 向左箭头键(←)    ...

  10. python 字典转成对象

    database = { "key1": { 'period':999, "data": { 'a':1, 'b':2, } }, "key2&quo ...