我想给一个dude
一个改变攻击方式的项目。我想以某种方式包装dmg
函数,并修改单个Dude
实例的返回值
我意识到如果我装饰AttackComponent.dmg.fget
,它将影响所有实例;当我只想让它影响到一个使用该项目
bonus_dmg
从buff/items/etc频繁更改
class Dude:
def __init__(self):
self.attack = AttackComponent(self)
self.base_dmg = 9000
self.bonus_dmg = [9, 90, 900]
@property
def total_dmg(self):
return self.base_dmg + sum(self.bonus_dmg)
class AttackComponent:
def __init__(self, dude):
self.dude = dude
@property
def dmg(self):
return {'physical dmg': self.dude.total_dmg}
dude1 = Dude()
dude2 = Dude()
dude3 = Dude()
我想给dude1
一个可以修改dude1.attack.dmg
返回的项。
例如,它将dmg的百分比转换为magic dmg,例如:
print(dude1.attack.dmg) # {'physical dmg': 7777, 'magic dmg': 2222}
print(dude2.attack.dmg) # {'physical dmg': 9999}
print(dude3.attack.dmg) # {'physical dmg': 9999}
目前没有回答
相关问题 更多 >
编程相关推荐