试图用变量引用属性(Python)

时间:2013-11-03 13:49:13

标签: python python-2.7

我正在填充Python atm并尝试制作一个小游戏类型的东西。到目前为止没有那么多,但我希望的是一个战斗系统,允许你针对特定的身体部位(我选择将它们定义为一个对象)。以下代码用于获取目标单位,该单位的一部分以及用于攻击的手(在此片段中仅右侧)并调用目标bodypart的方法,该方法将“损坏”它。

    def attack(self, target, part, hand):
        if hand == 'right':
             if self.righthand.o <> []:    #this checks if the righthand has a weapon
                 dmg = self.righthand.o[0].getdmg()  #gets damage from the weapon
                 target.part.deltahealth(dmg)  #reduces the bodyparts HP value

现在问题出现在上面第5行。在我的脑海中,这意味着将其称为特定部分。例如target.lefthand.deltahealth(dmg)或target.righthand.deltahealth(dmg)

    class Bodypart(object):

        def __init__(self, e, t):
            self.MHP = self.gmh(e,t) #this calculates a health, not relevant really
            self.CHP = self.gmh(e,t)
            self.holding()
            self.status = 'Healthy'

       def deltahealth(self,d):
            self.CHP = self.CHP - d  #specifically this

然而,它不起作用,因为它寻找bodypart'part'而不是part的值。反正是以我正在寻找的方式来完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

您正在寻找getattr。在上面的示例中,它应该是:

getattr(target,part).deltahealth(dmg)

请注意,要使其正常工作,部分需要是一个字符串。

  1. http://docs.python.org/2/library/functions.html#getattr