封裝類——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進行雙目立體視覺構建的方法。