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
如何解决此问题?
答案 0 :(得分:1)
它就是它所说的。 send_msg本身没有任何意义。您首先需要一个Method对象。所以Method(some_command).send_msg()可以工作。这是假设您在执行命令时传递的所有内容。但是send_msg是一个只有在拥有对象后才能访问的函数。
编辑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'))
如果您绝对必须有一个对象,那么我们可以考虑做其他事情。这有帮助吗?