激活函数中的方法

时间:2017-01-26 20:52:47

标签: python

有没有办法在你创建一个函数时,给它2个参数作为对象和方法的名称。在正文中,您可以像在函数外部一样应用方法,例如:Boat2.Damage。

实施例

class boat:
    def __init__(self,):
        self.hp = 100
    def damage(self):
        self.hp = self.hp - 50

def use_card(name,attribute):
    return name.attribute

use_card(boat2, damage())

有没有让这项工作?

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题,但是下面显示了如何通过提供一个包含其名称作为字符串的参数来调用方法(从函数内部):

class Boat:
    def __init__(self,):
        self.hp = 100
    def damage(self):
        print('damage() called')
        self.hp = self.hp - 50

def use_card(obj, attrname):
    return getattr(obj, attrname)()

boat2 = Boat()
use_card(boat2, "damage")  # -> damage() called

这是你想要做的吗?

答案 1 :(得分:0)

是的!这正是我试图做的。当您在函数调用中手动输入对象和方法作为参数时,它将它们链接在一起。

对于未来的读者,我为什么要这样做?因为我有一个与敌人和卡片的游戏。我想给用户一个选项,他可以点击敌人(敌人的名字将出现在obj参数的位置,卡(这是一种对敌人做某事的方法)来到的地方attrname参数。这样,​​该方法就会在对象上调用!

例如,敌人的名字(对象)是:Tom,卡名(方法)是损坏。 当您调用该函数时,您将这些名称作为参数,以便: use_card(汤姆,"伤害"),在这个功能中发生: tom.damage 。太棒了!