为什么动态调用函数时会出现TypeError?

时间:2014-01-15 17:32:15

标签: python

我的代码与此类似。在MyModule.py

class SomeClass:
    @classmethod
    def SomeMethod(cls, a, b, c):
        return "foo"

然后我有另一个python文件:

cls = getattr(MyModule, "SomeClass")
method = getattr(cls, "SomeMethod")
args = { "a":1, "b": 2, "c": 3 }
res = method(**args)
print "Result: " + res
print "Result type: " + str(type(res))

但是我在行调用类型()上遇到以下错误:

TypeError: 'unicode' object is not callable

为了使事情复杂化,我没有得到这个缩小的例子的错误。关于如何调试这个的任何想法? type()如何生成这样的错误?

1 个答案:

答案 0 :(得分:1)

您有一个绑定到unicode值的局部变量strtype(或两者)。删除它,该变量掩盖内置的可调用。

您可以使用del strdel type删除该引用,并且可以再次使用内置功能。<​​/ p>

或者,使用:

import __builtin__

print "Result type: " + __builtin__.str(__builtin__.type(res))

绝对肯定你正在使用内置插件。