1. 程式人生 > >面向對象,類名稱空間,查找順序,組合

面向對象,類名稱空間,查找順序,組合

lang ole style lan 全部 -s 這一 進行 英雄

# 程序從上往下一次把類的靜態變量和方法全部加載進一個內存空間,直到遇到類名加括,實例化對象的時候會新開辟一個內存空間,
# (會有一個類對象指針)在對象裏面沒找到目標會根據指針,去類裏面找

# 查詢順序:
# 對象.屬性:先從對象空間找,如果找不到,再從類空間找,再找不到再從父類找
# 類名.屬性:先從本類空間找,如果找不到,再從父類找
類名稱空間:在定義類的時候會開辟一個空間,這個空間裏面裝著所有的類
class
Person: animal=高級動物 soul=有靈魂 language=語言 def __init__(self,name,age,sex): self.name
= name self.age = age self.sex = sex def eat(self): print(%s,在吃飯 % (p1.name)) p1=Person(張三,18,) print(p1.language) #先從對象空間找,沒有找到在去類空間找

組合:

# 組合:給一個類的對象封裝一個屬性,這個屬性是另一個類的對象
# 3,模擬英雄聯盟寫一個遊戲人物的類(簡單的封裝).
# 要求:
# (1)創建一個 Game_role的類.
# (2) 構造方法中給對象封裝name,ad(攻擊力),hp(血量).三個屬性.
# (3) 創建一個attack方法,此方法是實例化兩個對象,互相攻擊的功能:
# 例: 實例化一個對象 蓋倫,ad為10, hp為100
# 實例化另個一個對象 劍豪 ad為20, hp為80
# 蓋倫通過attack方法攻擊劍豪,此方法要完成 ‘誰攻擊誰,誰掉了多少血, 還剩多少血‘的提示功能.

class Game_role:
def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
def attack(self,p):
p.hp=p.hp-self.ad
print(‘%s攻擊%s,%s掉了%s血,還剩%s血‘ % (self.name,p.name,p.name,self.ad,p.hp))
p1=Game_role(‘蓋倫‘,10,100)
p2=Game_role(‘劍豪‘,20,80)
p1.attack(p2)
 

(升級)
class Game_role:
    def __init__(self,name,ad,hp):
        self.name = name
        self.ad = ad
        self.hp = hp
    def men_weapon(self,we):    #定義一個封裝武器的方法(接收參數,把武器封裝給對象)
        self.we=we      #we接收的就是a1,(相當於賦值,此時we就是封裝好的武器)
class Weapon:
    def __init__(self,name,ad):
        self.name = name
        self.ad = ad
    def fight(self,p1,p2):
        p2.hp=p2.hp-self.ad
        print(%s攻擊%s,%s掉了%s血,還剩%s血 % (p1.name,p2.name,p2.name,self.ad,p2.hp))
p1=Game_role(蓋倫,20,100)
p2=Game_role(劍豪,50,80)
a1=Weapon(大刀,60)
a2=Weapon(小刀,30)
p1.men_weapon(a1)     #組合,在這一步調用封裝武器的方法,把武器傳給函數進行封裝
p1.we.fight(p1,p2)    #這裏解釋出來就是發起攻擊,p1對象使用, we裝備好的給p1的武器, fight攻擊方法(函數方法) , (p1,p2)是p1攻擊p2

面向對象,類名稱空間,查找順序,組合