封装类——class(将内容封装到某处)
class name:
def const(self,……)
我们调用函数const时可以这样调用
obj = name()
obj.const()
这里有个概念,类中均包含一个公有参数集,该参数集可以被类内任意函数调用,因此这里也有规定,类内函数的第一个位置参数都是self(这保证了所有函数都能调用self这个参数集)
下面实例来自:https://www.cnblogs.com/chengd/articles/7287528.html
练习二:游戏人生程序
1、创建三个游戏人物,分别是:
苍井井,女,18,初始战斗力1000
东尼木木,男,20,初始战斗力1800
波多多,女,19,初始战斗力2500
2、游戏场景,分别:
草丛战斗,消耗200战斗力
自我修炼,增长100战斗力
多人游戏,消耗500战斗力
复制代码
定义实现功能的类
class Person:
def __init__(self, na, gen, age, fig): #初始定义self
self.name = na
self.gender = gen
self.age = age
self.fight =fig
def grassland(self):
"""注释:草丛战斗,消耗200战斗力"""
self.fight = self.fight - 200
def practice(self):
"""注释:自我修炼,增长100战斗力"""
self.fight = self.fight + 200
def incest(self):
"""注释:多人游戏,消耗500战斗力"""
self.fight = self.fight - 500
def detail(self):
"""注释:当前对象的详细情况"""
temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s" % (self.name, self.gender, self.age, self.fight)
print temp
# ##################### 开始游戏 #####################
cang = Person('苍井井', '女', 18, 1000) # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800) # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500) # 创建波多多角色
cang.incest() #苍井井参加一次多人游戏
dong.practice()#东尼木木自我修炼了一次
bo.grassland() #波多多参加一次草丛战斗
#输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail()
cang.incest() #苍井空又参加一次多人游戏
dong.incest() #东尼木木也参加了一个多人游戏
bo.practice() #波多多自我修炼了一次
#输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail()
游戏人生
一般应用流程为
定义类
class Person:
初始化类内self
def __init__(self, na, gen, age, fig): #初始定义self
使用类的过程相互独立,使用前先进行初始化
cang = Person('苍井井', '女', 18, 1000) # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800) # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500) # 创建波多多角色
之后直接可以使用类内函数
cang.incest() #苍井井参加一次多人游戏
……用起来是不是很舒服……开心
当然,类在使用中也涉及了继承类,即我们定义了一个类,在定义第二个类时发现该类中有些东西和第一个类的重复了,因此我们可以让第二个类继承第一个类的变量和函数
class A()
class B(A) #B类继承了A类
例如:
我们游戏中职业分战士和法师
而战士和法师,每个人都有血、蓝和经验,因此血、蓝和经验无需二次定义
class role
def __init__(self, blo, mn, exp): #初始定义self
self.blood = blo
self.mana = mn
self.experience =exp
def blood(self):
print "%s 的血量为: %s " %self.name,self.blood
def mn(self):
print "%s 的蓝量为: %s " %self.name,self.mana
def exp(self):
print "%s 获得的经验值为: %s " %self.name,self.experience
法师
class master(role)
def __init__(self, na): #初始定义self
self.name = na
self.breed = '法师'
def doit(self):
print "熟练暴风鬼影"
战士
class man(role)
def __init__(self, na): #初始定义self
self.name = na
self.breed = '战士'
def doit(self):
print "熟练精魂水盾"
程序编辑好了,让我们实验一下
m1 = master('路易斯',45,344,1088);
master.mana()
master.doit()
m2 = man('波塞冬',250,15,988);
man.blood()
man.doit()
输出
路易斯的蓝量为:344
熟练暴风鬼影
波塞冬的血量为:250
熟练精魂水盾
下一章将回归主题,开始寻找python进行双目立体视觉构建的方法。