python基础之对象之间的交互
面对对象编程之对象之间的交互
这是一个猫狗大战的例子
# 猫类
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基础之对象之间的交互的更多相关文章
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间
一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东 ...
- python 全栈开发,Day18(对象之间的交互,类命名空间与对象,实例的命名空间,类的组合用法)
一.对象之间的交互 现在我们已经有一个人类了,通过给人类一些具体的属性我们就可以拿到一个实实在在的人.现在我们要再创建一个狗类,狗就不能打人了,只能咬人,所以我们给狗一个bite方法.有了狗类,我们还 ...
- python基础——获取对象信息
python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...
- 设计模式系列之中介者模式(Mediator Pattern)——协调多个对象之间的交互
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...
- objectiv-c所有对象之间的交互是如何实现的?
在对象间交互中每个对象承担不同的角色,总的来说就是“数据发送者”和“数据接收者”两个角色.可以通过objective-c中给我们提供的手段来实现两者间的通讯.比如: “通知中心”NSNotificat ...
- python之 《进程之间数据交互和进程池》
1.进程q 进程呢就相当于一个房子,线程就相当于是房子里面在工作的人,那么一个房子的空间对于房子里面的人来说是共享的, 现在是多进程,也就是说有许多房子,很显然这个房子的空间只属于这个房子,不会属于其 ...
- 2015/8/28 Python基础(2):对象
Python用对象模型来存储数据.构造任何类型的值都是一个对象.Python对象都有是三个特性:身份,类型和值 身份是每个对象的唯一身份标识.任何对象都可以用内建函数id()来得到身份.如: > ...
- python基础-12 多线程queue 线程交互event 线程锁 自定义线程池 进程 进程锁 进程池 进程交互数据资源共享
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
随机推荐
- ABP 网站发布
报错1:HTTP Error 503. The service is unavailable. 解决:IIS->应用程序池->高级设置->进程模型->标识.将内置账户更改为Ne ...
- vue中使用过的全局API
Vue.directive()---------全局自定义指令 Vue.filter()----------全局过滤器 Vue.$set()----------为响应式对象添加一个响应式属性 Vue. ...
- 使用webpack.optimize.CommonsChunkPlugin提供公共代码
在webpack4里使用webpack.optimize.CommonsChunkPlugin时,报错,webpack4删除了常用的 CommonsChunkPlugin ,提示我们用config.o ...
- nginx设置防盗链
1.一般的防盗链设置: location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers none blocke *.julyy.site ...
- CSS 分割线
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- orcle not like不建议使用(not like所踩过的坑!)
1.情景展示 现在有一张表,需要将表中某字段的值不是以指定字符开头的列进行删除,如何实现? 2.问题分析 错误方案一:同事想到的是:这种方式 咱们来看一下,这个表总共有多少条数据 本来表数据总共才 ...
- java web开发入门四(spring)基于intellig idea
spring 1.spring简介 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架. 且可以和其他框架一起使用:Spring与Struts, Spring与hibernate (起 ...
- 记录ssis的两个异常解决办法
1.Foreach文件枚举提示变量为空的解决办法:把foreach属性窗口中的DelayValidation设置为True就可以了 2.csv导入数据库提示:无法在 unicode 和非 unicod ...
- spring cloud 服务治理 - Eureka
前言 在分布式系统领域有个著名的CAP定理: C——数据一致性: A——服务可用性: P——服务对网络分区故障的容错性. 这三个特性在任何分布式系统中不能同时满足,最多同时满足两个. Zookeepe ...
- SpringCloud 基础
目录 SpringCloud 基础 一.概述 二.服务发现组件 Eureka 1. 介绍 2. 搭建 Maven 父工程 3. 创建 Eureka 集群 4. 创建服务提供方集群 5. 创建服务消费方 ...