python - 我可以只为单个实例装饰属性获取器吗?
问题描述
我想给一个dude
改变它的攻击方式的项目。我想以某种方式包装该dmg
函数并修改其单个Dude
实例的返回值。
我意识到如果我 decorate AttackComponent.dmg.fget
,它将影响所有实例;当我只希望它影响使用该项目的人时。
bonus_dmg
经常从 buffs/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 的百分比转换为魔法 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}
解决方案
推荐阅读
- java - 如何在网格中生成点流(X 和 Y 坐标)?
- sql - 如何计算在大查询中执行多个事件的用户数?
- spring-security-oauth2 - 将现有的用户名/密码帐户连接到 OpenID
- elasticsearch - pod重启时,如果想在pod定义文件中运行shell脚本怎么办?
- reactjs - 在 useCallback 中使用 setState 功能更新做出反应
- c++ - 如何将“unique_ptr
&”推回“向量” >" - azure-devops - 开发空间工具。如何在 --force-build 模式下部署依赖
- reactjs - 错误:跨应用程序使用通用组件时出现“无效的挂钩调用”
- pip - conda 环境中的 pip.conf 位置
- java - 从 HTML 生成的 Spring PDF 不使用本地化消息