Почему это не определено, когда я это определил?(NameError) - PullRequest
0 голосов
/ 24 ноября 2018

Я делаю игру, и этот код включен.Но как-то это не определено, когда я четко определил его в коде?

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

, то есть код, но он не хочет работать, как говорит NameError: action_method не определен.Пожалуйста, помогите

1 Ответ

0 голосов
/ 24 ноября 2018

Похоже, что вы определяете эту функцию внутри класса, поскольку вы включили "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/

...