【发布时间】:2016-08-27 21:13:05
【问题描述】:
在 Node.js 中,当我想快速检查某物的值而不是破坏调试器并单步执行时,我会快速添加一个 console.log(foo) 并获得一个漂亮的:
{
lemmons: "pie",
number: 9,
fetch: function(){..}
elements: {
fire: 99.9
}
}
很清楚!在 Python 中,我得到了这个:
class LinkedList:
head = None
tail = None
lemmons = 99
<__main__.LinkedList instance at 0x105989f80>
或vars(),
{}
或dir(),
['_LinkedList__Node', '__doc__', '__module__', 'append', 'get_tail', 'head', 'lemmons', 'remove', 'tail']
呸!看看那些废话——我认为 python 应该是快速、美丽和干净的?这真的是人们的做法吗?他们是否为所有内容实现了客户 str 和自定义 repr?因为这似乎也有点疯狂..
【问题讨论】:
-
你说 Python 的日志记录很丑?你试过调试 C++ 吗? :)
-
实例变量进入
__init__,不在类级别。这就是为什么你从vars得到如此无用的输出。 -
不过,我建议您编写一个自定义
__repr__。 -
@user2357112 哇,是的.. 这很有意义。谢谢!
-
我只是打印那些我感兴趣的属性,像 node.js 那样输出绝对所有东西似乎都太混乱了。
标签: python class debugging object tostring