在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 ?因为那似乎也有点疯狂..
答案 0 :(得分:0)
您可以打印您的物品和Python类有很多不同的方式,这里只是一个简单的方法:
class LinkedList:
head = None
tail = None
lemmons = 99
def __str__(self):
return str(vars(LinkedList))
print LinkedList()
我建议您开始熟悉str and repr运营商。在任何情况下,这都是一个小例子,使用python,有很多方法可以打印漂亮的物体。类
答案 1 :(得分:0)
期望您implement your own __str__
method,以便您可以选择登录您的诊断的重要内容。
但是,可以选择将整个对象字典记录在&#34;漂亮的&#34;格式使用几行代码。例如:
from pprint import pformat
class A(object):
def __init__(self):
self.foo = 1
self.bar = {"hello": "world"}
self._private = 0
a = A()
print pformat(vars(a))
# You can also pass pformat to your logger if that's what you have.
这将返回类似这样的内容(取决于您拥有的数据量和width
约束条件):
{'_private': 0,
'bar': {'hello': 'world'},
'foo': 1}