获取对象的上下文

时间:2014-02-08 22:28:34

标签: python oop python-3.x introspection

我正在用Python编写游戏。玩家角色和敌人角色是Person的实例。字符可以具有类Power的权力。当角色在战斗中使用力量时,Power物体需要知道谁拥有力量(为了施加力量所具有的任何效果)。如何让Power对象知道Person是谁?

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

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

1 个答案:

答案 0 :(得分:2)

目前还不清楚您的对象究竟是如何交互的,但这是一个选项的最小示例:

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)

这为Power中的Person提供了一个界面,并在Person d时Power明确地传递给use