python - 无法到达类参数中的函数

标签 python python-3.x eval

class Method:
    def __init__(self,command):
        eval('Method.command')
    def send_msg(self):
        return True

我期待使用 print(Method(send_msg)) 得到 True,但它却引发了以下错误。

NameError: name 'send_msg' is not defined

如何解决这个问题?

最佳答案

这正是它所说的。 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'))

如果你绝对必须有一个对象,那么我们可以考虑做其他事情。这有帮助吗?

关于python - 无法到达类参数中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896427/

相关文章:

python - 使用 numpy lstsq 计算残差

python - jsonResponse = r.json() 名称错误 : name 'r' is not defined

ruby - Ruby 中有点复杂的 eval

javascript - 计算对 eval 的调用次数

python - 使用 Sphinx 在 HTML 中创建上下文相关的帮助文件

python 线路分析器查看结果

python - 尝试在非包中进行相对导入(2to3 之后)

javascript - 有没有一种安全的方法可以在网页中运行 eval 并避免它访问页面其余部分的内容?

python - 对于命令行应用程序,什么是 python 替代 thor (ruby)?

python - Librosa 从 URL 读取 MP3 音频