组合

 1 # # 组合
 2 # """定义:给一个类的对象封装一个属性,这个属性是另一个类的对象"""
 3 #
 4 #
 5 # # 版本一: 添加武器:刀,枪,棍,棒,....
 6 # # 代码不合理,人物利用武器打人,你的动作发起者是人而不是武器
 7 # class GameRole:
 8 #
 9 #     def __init__(self, name, ad, hp):
10 #         self.name = name
11 #         self.ad = ad
12 #         self.hp = hp
13 #
14 #     def attack(self, p):
15 #         p.hp = p.hp - self.ad
16 #         print(f"{self.name}攻击了{p.name},{p.name}掉了{self.ad}血,还剩多少{p.hp}血")
17 #
18 #
19 # class Weapon:
20 #     def __init__(self, name, ad):
21 #         self.name = name
22 #         self.ad = ad
23 #
24 #     def fight(self, p1, p2):
25 #         p2.hp = p2.hp - self.ad
26 #         print(f"{p1.name}用{self.name}打了{p2.name},{p2.name}掉了{self.ad}血,还剩{p2.hp}血")
27 #
28 #
29 # p1 = GameRole('大阳哥', 20, 500)
30 # p2 = GameRole('虎哥', 50, 200)
31 # axe = Weapon('三板斧', 60)
32 # broadsword = Weapon('屠龙宝刀', 100)
33 # axe.fight(p1, p2)
34 # broadsword.fight(p2, p1)
35 
36 # 版本二
37 # 组合
38 """定义:给一个类的对象封装一个属性,这个属性是另一个类的对象"""
39 # 给一个类的对象封装的一个属性封装另一个对象 称为组合
40 class Pa:
41     a = 0
42     def __init__(self, name):
43         self.name =name
44 
45 
46 class GameRole:
47 
48     def __init__(self, name, ad, hp):
49         self.name = name
50         self.ad = ad
51         self.hp = hp
52 
53     def attack(self, p):
54         p.hp = p.hp - self.ad
55         print(f"{self.name}攻击了{p.name},{p.name}掉了{self.ad}血,还剩多少{p.hp}血")
56 
57     def armament_weapon(self, wea):
58         self.wea = wea
59 
60 
61 class Weapon:
62     def __init__(self, name, ad):
63         self.name = name
64         self.ad = ad
65 
66     def fight(self, p1, p2):
67         p2.hp = p2.hp - self.ad
68         print(f"{p1.name}用{self.name}打了{p2.name},{p2.name}掉了{self.ad}血,还剩{p2.hp}血")
69 
70 
71 p1 = GameRole('大阳哥', 20, 500)
72 p2 = GameRole('虎哥', 50, 200)
73 axe = Weapon('三板斧', 60)
74 print(axe)
75 broadsword = Weapon('屠龙宝刀', 100)
76 p1.armament_weapon(axe)   # 给大阳哥 装备了三板斧
77 # print(p1.wea)
78 # print(p1.wea.name)
79 # print(p1.wea.ad)
80 p1.wea.fight(p1, p2)

 

上一篇:0019-leetcode算法实现之删除链表倒数第n个节点-remove-nth-node-from-end-of-list-python&golang实现


下一篇:Kafka 负载均衡策略