python对象的属性引用另一个类的

Posted m-learning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python对象的属性引用另一个类的相关的知识,希望对你有一定的参考价值。

class GameRole:
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
if p.hp > 0:
print("%s攻击%s,%s掉了%s点血,还剩%s点血"
% (self.name, p.name, p.name, self.ad, p.hp))
else:
print(p.name + "死亡")

def arm_weapon(self, wea):
self.wea = wea


class Weapon:
def __init__(self, name, ad):
self.name = name
self.ad = ad

def fight(self, p1, p2):
p2.hp = p2.hp - self.ad
if p2.hp > 0 and p1.hp > 0:
print("%s用%s打了%s,%s掉了%s点血,还剩下%s点血"
% (p1.name, self.name, p2.name, p2.name, self.ad, p2.hp))
else:
p2.hp = 0
# print(p2.name + "死亡,游戏结束")

p1 = GameRole("盖伦", 20, 500)
p2 = GameRole("亚索", 50, 400)
axe = Weapon("斧头", 60)
sward = Weapon("屠龙宝刀", 100)

p1.arm_weapon(axe)
p2.arm_weapon(sward)

count = 0
while 1: # 你们开始打吧,哈哈,管我毛事
print("第%s回合" % (count + 1))

if p1.hp > 0:
p1.wea.fight(p1, p2)

if p2.hp > 0:
p2.wea.fight(p2, p1)

if p1.hp <= 0:
print("%s用%s把%s打死了,%s获胜,游戏结束,让我们恭喜%s!"
% (p2.name, p2.wea.name, p1.name, p2.name, p2.name))
break

if p2.hp <= 0:
print("%s用%s把%s打死了,%s获胜,游戏结束,让我们恭喜%s!"
% (p1.name, p1.wea.name, p2.name, p1.name, p1.name))
break

count += 1

以上是关于python对象的属性引用另一个类的的主要内容,如果未能解决你的问题,请参考以下文章

Python()- 面向对象的组合用法

Python-面向对象(组合封装与多态)

python基础类的定义与使用

python面向对象之类的组合

Python类的组合时产生的属性同步改变问题

python 类 二: 类的属性