Python“NoneType不可调用”错误

时间:2010-07-19 17:32:16

标签: python types

我有一个看起来如下的函数,有很多可选参数。其中一个参数是text

我特意处理text因为如果它是一个布尔值,那么我想跑去做一些基于它的事情。如果不是(这意味着它只是一个字符串),那么我会做其他事情。代码看起来大致如下:

def foo(self, arg1=None, arg2=None, arg3=None, ...,  text=None, argN=None, ...):
    ...
    if text is not None:
        if type(text)==bool:
            if text:
                # Do something
            else:
                # Do something else
        else:
            # Do something else

我在type(text)==bool行上收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "...", line 79, in foo
    if type(text)==bool:
TypeError: 'NoneType' object is not callable

不确定问题是什么。我应该以不同的方式测试类型吗?在python命令行上进行试验似乎证实了我的做法应该有效。

2 个答案:

答案 0 :(得分:8)

我猜你在某处有一个名为type的参数,我可以使用以下代码轻松重现您的错误:

>>> type('abc')
<class 'str'>
>>> type = None
>>> type('abc')
Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    type('abc')
TypeError: 'NoneType' object is not callable

答案 1 :(得分:0)

我打赌你的论点中有type=None

一般规则的一个特例:“不要隐藏自己的内置标识符 - 它可能会或可能不会在任何特定的情况下咬人,但它咬你在某些情况下,除非你养成正确的习惯“! - )