python人狗大战游戏_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=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__['属性名']

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值