не может достичь функции в параметре класса - PullRequest
0 голосов
/ 27 февраля 2019
class Method:
    def __init__(self,command):
        eval('Method.command')
    def send_msg(self):
        return True

Я с нетерпением жду получения True с print(Method(send_msg)), но вместо этого возникает следующая ошибка.

NameError: name 'send_msg' is not defined

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 27 февраля 2019

это именно то, что он говорит.Сам по себе send_msg не имеет смысла.Сначала вам нужен объект Method.Таким образом, метод (some_command) .send_msg () будет работать.Это предполагает, что все, что вы передаете, как команда работает.но send_msg - это функция, которая будет доступна только тогда, когда у вас есть объект.

Edit 1

Я не вижу никакой причины использовать объект здесь.Есть много разных способов выполнить то, что вы хотите.Обычно я делаю что-то вроде этого.

map = {}
def decorator(func):
    map[func.__name__] = func
    return func

@decorator
def send_msg(msg):
    return True

received_input = 'send_msg'
print(map)
print(map[received_input]('a message'))

Если вам абсолютно необходим объект, то есть другие вещи, на которые мы могли бы обратить внимание.Это помогает?

...