一、python類的組合:給乙個類的物件封裝乙個屬性,這個屬性是另乙個類的物件
二、組合的意義:讓類的物件與另乙個類的物件產生關係,類與類之間產生關係。
三、例子
模擬英雄聯盟寫乙個遊戲人物的類
要求:(1)建立乙個 game_role的類.
(2)構造方法中給物件封裝 name,ad(攻擊力),hp(血量).三個屬性.
(3)再建立乙個**類weapen,構造方法中給物件封裝 **名、**攻擊力兩個屬性
(4)**類還有乙個攻擊方法用來完成攻擊的功能。
整體實現的是:
例項化乙個物件 蓋倫,ad為69, hp為500
例項化另個乙個物件 亞索 ad為76, hp為400
例項化蓋倫的**: 大寶劍,**攻擊力40
例項化 亞索的**:武士刀,**攻擊力60
蓋倫通過attack方法攻擊劍豪,此方法要完成 '誰用什麼**攻擊了誰,誰掉了多少血, 還剩多少血'的提示功能.
classgame_role:
def__init__
(self,name,ad,hp):
self.name =name
self.ad =ad
self.hp =hp
defuse_weapen(self,w):
self.weapen =w
class
weapen:
def__init__
(self,weapen_name,weapen_ad):
self.weapen_name =weapen_name
self.weapen_ad =weapen_ad
defattack(self,role1,role2):
role2.hp = role2.hp - role1.ad -self.weapen_ad
msg = '
{}用{}攻擊了{},{}掉了{}血,還剩{}血'.\
format(role1.name,self.weapen_name,role2.name,role2.name,(role1.ad +self.weapen_ad),role2.hp)
(msg)
#例項化兩個人物物件
p1 = game_role('
蓋倫',69,500)
p2 = game_role('
亞索',76,400)
#例項化兩把**
w1 = weapen('
大寶劍',50)
w2 = weapen('
孤兒劍',60)
#這樣直接呼叫weapen的方法雖然可以實現,但是這樣實現的話,主體誰攻擊誰不能一目了然
w1.attack(p1,p2) #
蓋倫用大寶劍攻擊了亞索,亞索掉了119血,還剩281血
#所以,這時候就需要用到類的組合,在人物物件中設定乙個屬性,把**類的物件傳進去,
#再使用這個屬性呼叫攻擊方法,就可以知道誰發起的攻擊,一目了然
#所以此時要在人物類中設定乙個方法(use_weapen),用於給人物物件設定**的屬性
#這樣就可以一目了然知道誰是攻擊的主體
p1.use_weapen(w1)
#把w1這個物件賦給p1的乙個屬性(weapen) 相當於 p1.weapen = w1
p1.weapen.attack(p1,p2) #
通過p1.weapen呼叫attack方法 相當於 w1.attcak(p1,p2)
#這樣就可以一目了然知道p1是攻擊的主體
一、python類的組合:給乙個類的物件封裝乙個屬性,這個屬性是另乙個類的物件
二、組合的意義:讓類的物件與另乙個類的物件產生關係,類與類之間產生關係。
三、例子
模擬英雄聯盟寫乙個遊戲人物的類
要求:(1)建立乙個 game_role的類.
(2)構造方法中給物件封裝 name,ad(攻擊力),hp(血量).三個屬性.
(3)再建立乙個**類weapen,構造方法中給物件封裝 **名、**攻擊力兩個屬性
(4)**類還有乙個攻擊方法用來完成攻擊的功能。
整體實現的是:
例項化乙個物件 蓋倫,ad為69, hp為500
例項化另個乙個物件 亞索 ad為76, hp為400
例項化蓋倫的**: 大寶劍,**攻擊力40
例項化 亞索的**:武士刀,**攻擊力60
蓋倫通過attack方法攻擊劍豪,此方法要完成 '誰用什麼**攻擊了誰,誰掉了多少血, 還剩多少血'的提示功能.
classgame_role:
def__init__
(self,name,ad,hp):
self.name =name
self.ad =ad
self.hp =hp
defuse_weapen(self,w):
self.weapen =w
class
weapen:
def__init__
(self,weapen_name,weapen_ad):
self.weapen_name =weapen_name
self.weapen_ad =weapen_ad
defattack(self,role1,role2):
role2.hp = role2.hp - role1.ad -self.weapen_ad
msg = '
{}用{}攻擊了{},{}掉了{}血,還剩{}血'.\
format(role1.name,self.weapen_name,role2.name,role2.name,(role1.ad +self.weapen_ad),role2.hp)
(msg)
#例項化兩個人物物件
p1 = game_role('
蓋倫',69,500)
p2 = game_role('
亞索',76,400)
#例項化兩把**
w1 = weapen('
大寶劍',50)
w2 = weapen('
孤兒劍',60)
#這樣直接呼叫weapen的方法雖然可以實現,但是這樣實現的話,主體誰攻擊誰不能一目了然
w1.attack(p1,p2) #
蓋倫用大寶劍攻擊了亞索,亞索掉了119血,還剩281血
#所以,這時候就需要用到類的組合,在人物物件中設定乙個屬性,把**類的物件傳進去,
#再使用這個屬性呼叫攻擊方法,就可以知道誰發起的攻擊,一目了然
#所以此時要在人物類中設定乙個方法(use_weapen),用於給人物物件設定**的屬性
#這樣就可以一目了然知道誰是攻擊的主體
p1.use_weapen(w1)
#把w1這個物件賦給p1的乙個屬性(weapen) 相當於 p1.weapen = w1
p1.weapen.attack(p1,p2) #
通過p1.weapen呼叫attack方法 相當於 w1.attcak(p1,p2)
#這樣就可以一目了然知道p1是攻擊的主體
python物件導向之類,物件
類別,乙個是抽象概念 小a的朋友們 是一些列具備相同特徵和相同行為的物件的集合 就是具體操作的某個事物,具備自己的特徵和行 小a的朋友 小明 類包含一系列物件 物件屬於某個類 在現實中先有物件,再有類 在程式中是,先有類,才能有物件 而在程式中是先有類才能物件,我們必須先告訴計篡機這類的物件有什麼特...
Python中物件導向之類
1.建構函式案例 class complex def init self,real,imag 此處要記得寫引數self self.r real self.i imag print 建構函式被呼叫 x complex 3.0,4.5 print x.r,x.i 2.析構函式 案例class compl...
python物件導向之類的繼承
繼承 復用的高階抽象 繼承是物件導向程式設計的精髓之一 實現了以類為單位的高抽象級別 復用 繼承是新定義類能夠幾乎完全使用原有類屬性與方法的過程 基類的屬性基本等同於定義在派生類中 派生類可以直接使用基類的類屬性 例項屬性 派生類可以直接使用基類的各種方法 使用基類的類方法和類屬性時,要用基類的類名...