Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例
前言
编写类时,并非总是要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。当子类存在和父类一样的属性时,使用super() 函数用于调用父类。
目录
- 前言
- 小游戏
小游戏
import random as r
from matplotlib import pyplot as plt
def randdirection():a = r.random()if a>0.5:return 1else:return -1
class fish:def __init__(self, name,x,y):self.name = nameself.x=xself.y=ydef move(self):if self.x<=0:self.x+=1elif self.x>=5:self.x-=1else:self.x -= randdirection()if self.y <= 0:self.y += 1elif self.y>=5:self.y-=1else:self.y -= randdirection()def getlocation(self):t=[self.x,self.y]return t
class Goldfish(fish):pass
class Carp(fish):pass
class Salmon(fish):pass
class Shark(fish):def __init__(self,name,x,y,cond):super().__init__(name,x,y)self.hungry=conddef eat(self):if self.hungry:print("吃货的梦想就是天天有的吃 ლ(´ڡ`ლ)好吃的.")self.hungry=0return 1else:print("太撑了,吃不下了!Zzzzzz")self.hungry = 1return 0
fish=fish('鱼儿A',r.randint(1,5),r.randint(1,5))
goldfish=Goldfish('金枪鱼',r.randint(1,5),r.randint(1,5))
shark=Shark('鲨鱼',r.randint(1,5),r.randint(1,5),1)
flaga=0
flagb=0
for i in range(300):plt.clf()plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签plt.rcParams['axes.unicode_minus'] = Falseplt.title('大鱼吃小鱼')plt.xlim(0,5)plt.ylim(0,5)fish.move()goldfish.move()shark.move()t=[]t.append(fish.getlocation())t.append(goldfish.getlocation())t.append(shark.getlocation())#print(t)_x=[t[0][0],t[1][0],t[2][0]]_y=[t[0][1],t[1][1],t[2][1]]plt.scatter(_x, _y, s=[20, 80, 400], c=[0.2, 0.4, 0.7])if t[0][0]==t[2][0] and t[0][1]==t[2][1] and shark.eat():flaga+=1print('鱼儿A第{}次被鲨鱼吃掉了!'.format(flaga))plt.savefig('鱼儿A第{}次被鲨鱼吃掉了.jpg'.format(flaga))if t[1][0]==t[2][0] and t[1][1]==t[2][1] and shark.eat():flagb+=1print('金枪鱼第{}次被鲨鱼吃掉了!'.format(flagb))plt.savefig('金枪鱼第{}次被鲨鱼吃掉了.jpg'.format(flagb))if i==1:plt.savefig('大鱼吃小鱼.jpg')t.clear()plt.pause(0.01)
if flagb==0 and flaga==0:print('(╥╯^╰╥)鲨鱼,没吃到鱼(T▽T)')
输出结果为:
刚开始鱼的位置:
金枪鱼第1次被鲨鱼吃掉了
鱼儿A第1次被鲨鱼吃掉了
Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例相关推荐
- 十二. python面向对象主动调用其他类
一 .python面向对象主动调用其他类成员 (看代码) 主动调用 其他类的成员# 没有继承 的主动调用 class Grad(object):bar=555555def __init__(self, ...
- 【JAVA SE】第六章 面向对象、对象和类以及封装
第六章 面向对象.对象和类以及封装 文章目录 第六章 面向对象.对象和类以及封装 一.面向对象 1.概念 2.面向对象的三大特征 二.对象和类 1.基本概念 2.Java中的对象 3.Java 中的类 ...
- 笔记35 笨办法学python练习42对象、类、从属关系和部件关系
笔记35 笨办法学python练习42对象.类.从属关系和部件关系 一.类.对象与从属关系 这个练习是一个有点哲学意味的练习,讨论对象和类的关系,也就是从属关系.对象不就是下属于某个类的子类,或者个体 ...
- python 面向对象之封装与类与对象
封装 一,引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,小老虎一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装='隐藏',这种理解是相当片面的 二,先看如何隐藏 在 ...
- 面向对象设计:共性VS个性-------继承的粒度和聚合的粒度以及类的重构
共性和个性 依据面向对象的原理.类是对象的抽象.也就是说.类是一系列的既有共性又有个性的对象的高度概括,类的属性和方法代表了隶属于该类的全部对象的共性,类的每一个对象实例都能够有不同的属性值,这反映了 ...
- Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝
1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...
- python面向对象三大特性、类的约束、print带颜色输出及super补充
面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...
- Python - 面向对象编程 - 三大特性之继承
继承 继承也是面向对象编程三大特性之一 继承是类与类的一种关系 定义一个新的 class 时,可以从某个现有的 class 继承 新的 class 类就叫子类(Subclass) 被继承的类一般称为父 ...
- 【“笨办法”学Python】42.对象、类及从属关系——类即是对象
42.对象.类及从属关系--类即是对象 文章目录 前言 一.鱼和泥鳅有什么区别? 二.小丽和泥鳅有什么区别? 三.代码测试 四.super(Employee, self).\_\_init\_\_(n ...
最新文章
- mysql e 导出数据库_mysql导出数据库几种方法
- vim的模式及常用命令
- Vue UI 框架对比 element VS iview
- 放弃耳机孔、放弃按键的手机我们是怎么接受并习惯的?
- 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油
- MacBook Pro 16英寸样机模型正面视图psd素材
- win10taskkill强行结束进程_win10系统强制结束进程命令的方案
- 烧菜的基本技巧 来自d版
- python精通要数学好_深度学习需要多强的数学基础?
- cblas_sgemm和cublasSgemm参数详解
- 我的世界java村民繁殖_教程/村民养殖 - Minecraft Wiki,最详细的官方我的世界百科...
- 云原生yaml部署harbor
- 解决Win7缺失MSVCR120.DLL问题
- 偏财入财库大富_偏财入库无人不富是什么意思
- Centos8.3 nfs-ganesha使用ceph后端
- MySQL 8.0安装教程
- 笔记 -- 电磁学基础2
- 国信证券学习系列(1)
- 水经注,bigemap 功能对比
- TA游戏推荐:黑暗画风3D动作游戏《恐惧之魂》