我正在制作游戏,其中包含此代码。但是当我在代码中清楚地定义它时,却以某种方式未定义它?
def do_action(self, action, **kwargs):
action_method = getattr(self, action.method.__name__)
if action_method:
action_method(**kwargs)
那是代码,但是它不想工作,因为它说NameError:未定义action_method。 请帮助
答案 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/