无法在Python 2.7下从PDB中调用type()

时间:2012-09-16 20:23:25

标签: python pdb

p type("ddd")
*** TypeError: TypeError("'int' object is not callable",)
!print(type("dd"))
*** TypeError: 'int' object is not callable
type
255
!type
255

有人知道这是为什么吗?它似乎不是PDB命令。由于其名称,搜索答案并未成功。

2 个答案:

答案 0 :(得分:4)

发布您的代码。看起来你用自己的值覆盖了名称type,这恰好是一个整数。

答案 1 :(得分:3)

type不是PDB命令,或者在调试会话期间通常不可用。您必须在本地或全局命名空间中具有带整数值的局部变量type

>>> import pdb
>>> pdb.run('None')
> <string>(1)<module>()
(Pdb) type
<type 'type'>
(Pdb) type = 255
(Pdb) type('ddd')
*** TypeError: 'int' object is not callable

在测试代码中定义的局部变量:

>>> pdb.run('type = 255; None')
> <string>(1)<module>()
(Pdb) s
> <string>(1)<module>()
(Pdb) type
255

这些情况的解决方法是通过type模块引用原始的__builtins__函数:

(Pdb) type('ddd')
*** TypeError: 'int' object is not callable
(Pdb) __builtins__.type('ddd')
<type 'str'>