day23 python学习 类 人狗大战
面向过程 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 = job
def 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__['属性名']
day23 python学习 类 人狗大战的更多相关文章
- day24 python学习 类 画元,命名空间作用域,组合,人狗大战升级
类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...
- python开发面向对象基础:人狗大战学面向对象
一,通过函数写人狗大战这个故事 #!/usr/bin/env python #_*_coding:utf-8_*_ #1.函数 人模子 def person(name,level,life_value ...
- day23 02 组合(继续人狗大战游戏)
day23 02 组合(继续人狗大战游戏) 面向对象的三大特性:继承 多态 封装 先讲解一下组合 组合:一个对象的属性值是另一个类的对象:对象.属性.属性(一般有两个点) 继续扩展day22 01里面 ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- python学习快人一步,从19个语法开始!
Python简单易学,但又博大精深.许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉.学海无涯,我们先来了解一些Python中最基本的内容. Python的特点 ...
- python学习|类和实例
什么叫实例对象呢?大家可以想象一下,[类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在Python中就叫[实例对象]. 往深了说 ...
- Python学习-类
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...
- [python 学习] 类
#!/usr/bin/python # -*- encoding:utf-8 -*- class Animal: animal_num = 0 class Dog(Animal): #类帮助文档 't ...
- python学习-类属性和实例属性
#类属性和实例属性 class Tool(object): #类属性 total = 0 #静态方法 @classmethod def say(self): print("hello wor ...
随机推荐
- 12月16日 增加一个购物车内product数量的功能, 自定义method,在helper中定义,计算代码Refactor到Model中。
仿照Rails实战:购物网站 教材:5-6 step5:计算总价,做出在nav上显示购物车内product的数量. 遇到的❌: 1. <% sum = 0 %> <% current ...
- Android程序员眼中世界上最遥远的距离
世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离: 世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己: 世界上最真情的相依,是你在try我在catch. ...
- Confluence 6 为 Active Directory 配置一个 SSL 连接预要求
希望生成证书,你需要安装下面的组件在你希望连接的 Windows Domain Controller 上. Internet Information Services (IIS) 在你安装 Windo ...
- Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python-day10--字符编码
1.回顾: 软件→操作系统→硬件 2.文本编辑器: 启动:硬盘→内存→运行(cpu) 读文件:硬盘→内存→CPU读 存文件:保存到硬盘中 3.python解释器 启动:硬盘→内存→运行(cpu) 读文 ...
- 登录XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orient ...
- BZOJ1461 字符串的匹配
什么字符串...明明是两个数列... 分类上来讲,还是一道很好的noip题...(雾) 首先,kmp会不会?(答:会!) 其次,树状数组求顺序对会不会?(再答:会!) 讲完了!>.< 进入 ...
- Python Django 前后端数据交互 之 后端向前端发送数据
Django 前后台的数据传递 严正声明:作者:psklf出处: http://www.cnblogs.com/psklf/archive/2016/05/30/5542612.html欢迎转载,但未 ...
- TEdit的 Clear 和 赋值 ''
function TControl.GetText: TCaption; var Len: Integer; begin Len := GetTextLen; SetString(Result, PC ...
- INTEL NUC下一代计算机 怎么进bios,进不去bios
手上有个 英特尔® NUC 套件 DE3815TYKHE 玩具一样,200大洋收来的,配置不高,配了个4G内存,加上以前的2.5笔记本硬盘. 放家里当个小服务器玩吧,挺省电的. BIOS 开启fast ...