【问题标题】:Calling a function from a string in Python throws error在 Python 中从字符串调用函数会引发错误
【发布时间】:2013-07-23 21:45:21
【问题描述】:

我正在尝试从 Python 中的字符串调用函数,如 Calling a function of a module from a string with the function's name in Python.

不幸的是,这不起作用,Python 解释器会抛出错误: TypeError: 'str' object is not callable

def current(self, t):
    if self.iMode == None:
        return self.i
    else:
        return getattr(self, 'iMode')(t)

错误是指最后一行。 iMode 已设置为 sinx(t),已在类中声明。

谁能帮帮我?

【问题讨论】:

  • 你能把声明的部分贴出来吗?
  • 也许您应该将iMode 分配给sinx 而不是sinx(t)。
  • 你应该使用self.iMode is None而不是==
  • 有关您编写的代码问题的问题必须描述具体问题并包含重现问题的有效代码。有关指导,请参阅 SSCCE.org。

标签: python string function python-2.7


【解决方案1】:

从错误中,您的 iMode 是一个字符串。 iMode 不是一种方法。你的声明一定有问题。并且在课堂上可以使用self.iMode,不需要使用getattr

我想你可能会寻找像eval这样的功能。

【讨论】:

    【解决方案2】:

    从错误消息中可以明显看出您的属性设置为'sinx(t)'(字符串文字)。

    您应该将其设置为函数引用sinx,这是一个可调用的。

    但是,正如 zhangyangu 已经说过的,在您的示例中使用 getattr() 是不需要的。也许您真的想使用参数(字符串引用)而不是文字 'iMode'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2021-02-19
      相关资源
      最近更新 更多