【问题标题】:Get context of an object获取对象的上下文
【发布时间】:2023-03-09 02:25:02
【问题描述】:

我正在用 Python 编写游戏。玩家角色和敌人角色是Person 的实例。角色可以拥有Power 类的权力。当角色在战斗中使用异能时,Power 对象需要知道谁拥有该异能(以便应用异能具有的任何效果)。如何让Power 对象知道它的Person 是谁?

一个明显的解决方案是包含一个创建参数来存储对Person 的引用。但是,这有几个问题;一个是Power 的任何方法都可能还需要访问该变量,这会变得很尴尬,因为我已经向每个方法传递了一堆参数。

我宁愿有一种“聪明”的解决方案,允许对象“向上”查看它的位置。有这样的吗?

【问题讨论】:

    标签: python oop python-3.x introspection


    【解决方案1】:

    尚不清楚您的对象如何交互,但这里是一个选项的最小示例:

    def Power():
    
        def use(self, person):
            # do whatever
    
    
    def Person():
    
        def __init__(self, power):
            self.power = power
    
        def use_power(self):
            self.power.use(self)
    

    这为Person 中的Power 提供了一个接口,并在used 时将Person 显式传递给Power

    【讨论】:

    • 好吧,这不是我以前想到的方式。非常简单明了,但结构也很好。似乎要走的路……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多