物件導向初識(組合)

2022-08-13 17:42:19 字數 2437 閱讀 3368

一、物件導向(組合):

定義:給乙個類的物件封裝乙個屬性,這個屬性是另乙個類的物件。

意義:讓類的物件與另乙個類的物件產生關係,類與類之間產生關係。

說白了也就是把a物件當成屬性傳入b物件,然後讓b物件1去呼叫a物件

人物使用**攻擊另乙個人物:

class game_role:

def __init__(self,name,ad,hp):

self.name = name

self.ad = ad

self.hp = hp

def attack(self,role):

role.hp = role.hp - self.ad

print('%s赤手空拳攻擊了%s,%s掉了%s血,%s還剩%s血' % \

(self.name,role.name,role.name,self.ad,role.name,role.hp))

class weapon:

def __init__(self,name,ad):

self.name = name

self.ad = ad

def attack(self,role1,role2):

role2.hp = role2.hp - self.ad - role1.ad

print('%s用%s攻擊了%s,%s掉了%s血,%s還剩%s血' % \

(role1.name,self.name,role2.name,role2.name,role1.ad + self.ad,role2.name,role2.hp))

p1 = game_role('蓋倫',20,500)

p2 = game_role('劍豪',100,200)

w1 = weapon('大寶劍',30)

w2 = weapon('武士刀',80)

p1.attack(p2) # 蓋倫呼叫攻擊方法攻擊劍豪

p2.attack(p1) # 劍豪呼叫攻擊方法攻擊蓋倫

w1.attack(p1,p2) # 大寶劍呼叫攻擊方法攻擊劍豪 這樣不好,動作的發起者應該是人而不是**

w2.attack(p2,p1) # 武士刀呼叫攻擊方法攻擊劍豪 這樣不好,動作的發起者應該是人而不是**

但是動作的發起者變成了**,而不是人物,這樣就很不合理啦!

所以,組合就孕育而生。

組合的好處:就是能夠把乙個類的物件與另乙個類的物件產生關係,讓乙個類與另乙個類產生關係

class gamerole:

def __init__(self,name,ad,hp):

self.name = name

self.ad = ad

self.hp = hp

def attack(self,role):

role.hp = role.hp - self.ad

print('%s赤手空拳攻擊了%s,%s掉了%s血,%s還剩%s血' % \

(self.name,role.name,role.name,self.ad,role.name,role.hp))

def weapon(self,w): # 給人物封裝了乙個**屬性,這個屬性值是weapon類的乙個物件

self.weapon1 = w # 組合

class weapon:

def __init__(self,name,ad):

self.name = name

self.ad = ad

def attack(self,role1,role2):

role2.hp = role2.hp - role1.ad - self.ad

print('%s用%s攻擊了%s,%s掉了%s血,%s還剩%s血' % \

(role1.name,self.name,role2.name,role2.name,(role1.ad + self.ad),role2.name,role2.hp))

p1 = gamerole('蓋倫',20,500)

p2 = gamerole('劍豪',100,200)

w1 = weapon('大寶劍',30)

w2 = weapon('武士刀',80)

p1.weapon(w1) # 給蓋倫封裝大寶劍

print(p1.weapon1) # 其實 他就是w1

p2.weapon(w2) # 給劍豪封裝武士刀

print(p2.weapon1) # 其實 他就是w2

p1.weapon1.attack(p1,p2) # 蓋倫呼叫大寶劍攻擊劍豪

p2.weapon1.attack(p2,p1) # 劍豪呼叫大寶劍攻擊蓋倫

物件導向 初識物件導向

面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...

初識物件導向

1.例項化 2.init 方法 3.類方法和靜態方法 4.訪問控制 5.屬性裝飾器 在python中,用變數表示特徵,用函式表示技能,因而具有相同特徵和技能的一類事物就是 類 物件是則是這一類事物中具體的乙個.三要素類 class 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所...

初識物件導向

開始接觸物件導向程式設計,學習時間不長,寫下點自己目前的理解,總結梳理下最近的學習成果。一切皆是物件,物件導向體系中有這麼一句經典的話。我認為可以這麼理解,物件導向程式設計的關鍵步驟是如何將我們所希望實現的功能抽象為計算機可實現的模型,這些模型我們可以稱之為物件。當我們把具有相同特點的多個物件進一步...