为什么在定义时未定义? (NameError)

时间:2018-11-24 02:13:35

标签: python nameerror

我正在制作游戏,其中包含此代码。但是当我在代码中清楚地定义它时,却以某种方式未定义它?

def do_action(self, action, **kwargs):
    action_method = getattr(self, action.method.__name__)
if action_method:
    action_method(**kwargs)

那是代码,但是它不想工作,因为它说NameError:未定义action_method。 请帮助

1 个答案:

答案 0 :(得分:0)

由于您将“ self”作为函数的参数,因此您似乎在类内部定义了此函数。如果这是您的意图,那么要访问功能,您需要通过该类的实例进行操作

class ExampleClass:

    def do_action(self, action, **kwargs):
        action_method = getattr(self, action.method.__name__)
        if action_method:  #Also, i think you had an indent problem here when pasting?
            action_method(**kwargs)

instance = ExampleClass()
instance.do_action('action')

您可能还需要查看有关类方法,实例方法和静态方法的本文。这样一来,您就可以选择一种可以帮助您完成想要做的事情的方法。 https://realpython.com/instance-class-and-static-methods-demystified/