【发布时间】:2015-06-02 08:38:18
【问题描述】:
在使用 Python 解释器进行实验时,我无意中将一个字符串分配给了str,如下所示:
str = 'whatever'
后来在同一个会话中,我输入了另一个语句,调用了str(),比如说...
double_whatever = str(2) + ' * whatever'
...,并得到错误 TypeError: 'str' object is not callable(而不是预期的输出 '2 * whatever')。 related SO answer 帮助我快速发现自己犯的错误。
但是,我仍然不清楚如何在受影响的会话中修复对 str() 的调用。当然我可以退出 Python 解释器并开始另一个会话,但我很好奇如何避免这种情况。
到目前为止,我已经确认...
double_whatever = __builtins__.str(2) + ' * whatever' # => '2 * whatever'
...仍然像我想要的那样工作;但我不清楚如何恢复不需要__builtins__. 资格。
如何解决我无意中重新定义 str 以便我在 Python 解释器会话中对 str() 的调用再次起作用?
【问题讨论】:
-
这个最近的 SO 答案会有所帮助:stackoverflow.com/a/30563742/3923281
-
谢谢。这看起来很准确,
str并不是唯一可能犯这个错误的人。我实际上正在学习一个 ORA 在线课程,该课程让我分配给str...并且必须为每堂课假设一个新课程。 :P -
不是最好的,但很简单:
str = __builtins__.str -
@KarolyHorvath:是的,确实如此。我修补了一些接近的东西......现在看看它为什么失败了。我试过
str = __builtins__.str(),当然不一样;但你的建议是我的意图。谢谢!