面向过程 VS 面向对象

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

面向过程

优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。

缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

面向过程

优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。

缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。于是我们经常看到一个游戏人某一参数的修改极有可能导致阴霸的技能出现,一刀砍死3个人,这个游戏就失去平衡。

了解一些名词:类、对象、实例、实例化

类:具有相同特征的一类事物(人、狗、老虎)

对象/实例:对象就是具体的拥有准确属性值的一些变量具体的某一个事物(隔壁阿花、楼下旺财)

实例化:类——>对象的过程(这在生活中表现的不明显,我们在后面再慢慢解释)实例化:从一个类中创造一个具体的对象的过程

初识面向对象

类的最基本形式class Person: #类名有两个作用

country = '中国' #静态属性、数据属性

def walk(self): #动态属性、函数属性、方法

print('walk')

1.属性引用

在静态属性中的操作print(Person.country) #静态属性的查看

print(Person.walk)

Person.role= '人' #添加一个新静态属性

Person.country = '印度' #修改一个新静态属性静态属性

注意:在静态属性中的内容不能用下边这两种方法来处理,会报错

#Person.__dict__['country']='印度'

#Person.__dict__['love']='beautiflgirl'

del Person.role #删除一个静态属性

print(Person.__dict__)print(Person.walk()) #报错 少self参数

Person.__dict__['country'] = '印度' #报错 不能改变

print(Person.__dict__['country'])print(Person.country)

实例化

p =Person()print(p) #Person的对象

class Person: #类名有两个作用

country = '中国' #静态属性、数据属性

def __init__(self,life_value,aggr,name,job): #初始化方法

#self = {'lv':life_value}

self.lv = life_value #属性,对象属性

self.aggr =aggr

self.name=name

self.job=jobdef walk(self): #动态属性、函数属性、方法

print('%s is walking'%self.name)## p = Person() #如何让对象拥有具体的属性#p = Person(1000,2,'金老板','boss') #如何让对象拥有具体的属性print(p.__dict__) 这种方法可以查看所有的属性,以键值对的形式存在

#p.walk() # Person.walk(p) #调用里边的walk函数#print(p.lv) #Person的对象的属性查看#print(p.aggr) #Person的对象#p.sex = 'lady_boy' #添加一个属性 直接加#print(p.sex)#p.sex = 'girl' #属性的修改,直接修改#print(p.sex)#del p.sex #属性删除

用p.__dict__方法做的增删改查操作

#print(p.__dict__)#print(p.__dict__['lv']) #查看#p.__dict__['lv'] = 998 #对象名.__dict__中的属性值可以被修改#print(p.__dict__['lv'],p.lv)#p.__dict__['sex'] = 'lady_boy' #对象名.__dict__中的属性值可以增加#print(p.__dict__,p.sex)#p.__dict__.pop('sex') #对象名.__dict__中的属性值可以被删除#print(p.__dict__)

#实例化 ——类名(参数)

#构造方法:造对象

#初始化__init__:给这个赤裸裸的对象添加一些属性 __init__

#返回了一个初始化之后的对象

#__init__方法:初始化方法,可以没有。给对象添加一些必要的基础属性

#self的含义:就是这个对象本身

#对象和属性的操作:对象名.属性名 对象名.__dict__['属性名']

python人狗大战游戏_day23 python学习 类 人狗大战相关推荐

  1. 体感游戏 | 手势识别玩飞机大战游戏(二) Python+OpenCV实现简易手势识别功能

    后面将分四篇文章来介绍实现手势识别控制飞机大战游戏的功能,它们分别是: 使用Pygame实现简易飞机大战小游戏 使用Python+OpenCV实现简单手势识别 使用OpenCV实现手势识别玩飞机大战游 ...

  2. 【日常点滴019】Python制作流浪气球游戏(导弹射击类)

    Python制作流浪气球游戏(导弹射击类) 教学课程代码(分步教学版) 1.构建全局通用代码结构 2.构建气球精灵类 3.构建导弹精灵类 4.碰撞检测 5.构建游戏信息类 (最终完整代码) 教学课程代 ...

  3. python游戏小项目简单_[简单学Python] 通过一个小游戏完成Python入门[2]变量和赋值...

    变量和赋值 到这里,你已经成功地打印出了千寻的名字和卖身契.与此同时,千寻也成为了汤婆婆的工人,渐渐地,她忘记了自己是谁,遗失了自己"姓名"的信息. 那么,在信息纷繁的代码世界里, ...

  4. python编写贪吃蛇游戏下载,python实现简单的贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮.难度.音乐.得分功能,供大家参考,具体内容如下 贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设置. 游戏实现效果 ...

  5. 雷电飞机大战游戏|基于Java开发实现雷电飞机大战游戏

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好 ...

  6. python做飞机大战游戏单机_Python制作简易版飞机大战小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 欢迎与我交流 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即 ...

  7. 火柴人逃脱小游戏(python 超详细)

    大家好,今天我们开始做一个新的游戏--火柴人逃脱. 以下是效果图: 温馨提示:代码里有图片资源,你可以自己用GIMP画,也可以去下载: 图片 我们来看第一部分代码: from tkinter impo ...

  8. python超简单小游戏代码-Python实现简单的猜单词小游戏

    本文实例为大家分享了Python实现猜单词小游戏的具体代码,供大家参考,具体内容如下 思路 1.一个words列表里存放若干的单词,例如:["extends", "pri ...

  9. python能做什么游戏好-Python有做大型游戏的潜力吗?

    岂止是有潜力,简直是很合适! 猪厂两大游戏客户端引擎,NeoX 和 Messiah,都使用 Python 作为脚本语言. 你最近所了解的比较火的挂着猪厂旗号的,也都是 Python 写的. /> ...

最新文章

  1. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
  2. Sonya and Queries CodeForces - 714C
  3. 配置FCKeditor_2.6.3+fckeditor-java-2.4
  4. 信息奥赛一本通的递推练习
  5. NAT应用于HSRP环境
  6. ECS中的Entity实体
  7. 刚构桥的优缺点_[中交公规院]预应力连续刚构桥总体设计及主要尺寸
  8. 在Vue项目中使用Echarts的一种方式
  9. 数据库宿舍管理系统MySQL表_数据库-宿舍管理系统
  10. 申请ISO14001认证组织需要准备哪些资料
  11. 青鸟BCNT-网络信息安全工程师
  12. idea无法下载源码 Sources not found for: org.springframework:spring-context:5.1.5.RELEAS
  13. 按蚂蚁金服面试不过,就因为不会RPC服务超时排查思路?
  14. 台式机主板常见接口资料
  15. 计算机毕业设计Java银行贷款管理系统(系统+程序+mysql数据库+Lw文档)
  16. 2021年全国职业院校技能大赛:网络系统管理项目-真题-模块C-2全套视频讲解含无线地勘
  17. eem二级c语言题库哪种比较好,EEM18DCAD边缘板连接器供应【科美奇科技】Sullins华南地区渠道商...
  18. RWLinno的退役贴
  19. 河南省谷歌地球高程DEM等高线下载
  20. 新手上路,如何迅速搭建一套源码系统

热门文章

  1. js实现简单“商品总价计算”
  2. 各种数据接口欺骗器学习
  3. windows下用netsh工具设置笔记本wifi热点
  4. read方法阻塞的解决
  5. 写给大忙人的建议:如何优雅地速成代码?(教你如何在忙碌中学习新知识)
  6. Android边边角角
  7. html制作满天星,满天星怎么做干花
  8. 神经网络前向传播和反向传播公式推导(公式+图解)
  9. B站品牌营销!寻找优质UP主内容共创
  10. vue3中实现放大镜效果,使用ref获取节点元素