1. 程式人生 > >面向對象中組合的用法

面向對象中組合的用法

管理 例子 teacher 足夠 __init__ bsp why 分享 name

# 組合  一個類對象的屬性值是另外一個類的對象

#
class Dog:
    def __init__(self, name, aggr, hp, kind):
        self.name = name
        self.aggr = aggr
        self.hp = hp
        self.kind = kind


    def bite(self, persion):
        persion.hp += self.aggr

#
class Persion:
    def __init__(self, name, aggr, hp, sex):
        self.name 
= name self.aggr = aggr self.hp = hp self.sex = sex self.money = 0 def attack(self, dog): dog.hp -= self.aggr def get_weapon(self, weapon): # 獲得裝備 if self.money >= weapon.price: self.money -= weapon.price # 對象沒有這個屬性值則會創建一個weapon屬性值
self.weapon = weapon # 一個對象的屬性值是另外一個類的對象 組合 self.aggr += weapon.aggr else: print(金幣不足,請獲取足夠金幣) # 武器 class Weapon: def __init__(self, name, aggr, njd, price): self.name = name self.aggr = aggr self.njd = njd self.price
= price def hand18(self, persion): # 武器技能 if self.njd > 0: persion.hp -= self.aggr * 2 self.njd -= 1 alex = Persion(alex, 0.5, 100, 不詳) jin = Dog(金老板, 100, 500, 不詳) w = Weapon(打狗棒, 100, 3, 998) # alex充了1000金幣 alex.money += 1000 # alex買了打狗棒 alex.get_weapon(w) print(alex.weapon) print(alex.aggr) # alex攻擊了jin alex.attack(jin) print(jin.hp) # alex使用武器的技能攻擊jin alex.weapon.hand18(jin) print(jin.hp) # 上面的例子其實就默默的用到了組合 # 組合:一個對象的屬性值是另外一個類的對象 # alex.weapon 是 Weapon類的對象 # 組合練習(談到組合,就不只是一個類去解決問題) # 創建一個老師類 # 老師有生日 # 生日可以是一個類 class Birthday: def __init__(self, year, mon, day): self.year = year self.mon = mon self.day = day class Teacher: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex self.birthday = Birthday(1993, 8, 1) # 組合用法一個對象的屬性值是另外一個類的對象 # t = Teacher(why, 23, boy) print(t.birthday.year) # 大作業,校園管理系統

技術分享圖片

面向對象中組合的用法