我有一个如下所示的函数,有一大堆可选参数。其中一个参数,在所有其他参数中,就是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命令行上的实验似乎证实了我的方法应该是有效的。
发布于 2010-07-20 01:38:17
我猜你在某个地方有一个名为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发布于 2010-07-20 01:40:17
我敢打赌,你的论点中一定有type=None。
这只是一般规则的一个特例:“不要隐藏你自己的内置标识符--在任何特定的给定情况下,它可能会咬人,也可能不会咬人,但在未来的某些情况下,它会咬你,除非你养成正确的习惯”!-)
https://stackoverflow.com/questions/3283441
复制相似问题