面向對象中組合的用法
阿新 • • 發佈:2018-10-02
管理 例子 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) # 大作業,校園管理系統
面向對象中組合的用法