python二郎成長筆記(二)(封裝類class)

三眼二郎發表於2019-03-19

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

相關文章