python中有什么东西可以让我以一种看到它的基础数据表示的方式转出一个随机对象吗?
我来自Perl,Data :: Dumper合理地让我看到数据结构的布局。在python中有什么相同的东西吗?
谢谢!
答案 0 :(得分:2)
Perl中的Dumper
为您提供了一个对象的表示,该对象可以由解释器eval
来为您提供原始对象。 Python中的对象repr
试图这样做,有时它是可能的。 dict
的{{1}}或repr
的{{1}}执行此操作,而str
和repr
等类也会执行此操作。所以datetime
与timedelta
相当,但它并不漂亮,也没有向您显示对象的内部结构。为此,您可以使用repr
并滚动自己的打印机。
这是我在打印机上的镜头,它不会产生Dumper
能力的Python代码,因此应该用来生成对象的字符串:
dir
在上面的例子中,我重写了对象的默认eval
实现。当您尝试将对象表示为字符串或使用字符串格式化函数对其进行格式化时,会调用def dump(obj):
out = {}
for attr in dir(obj):
out[attr] = getattr(obj, attr)
from pprint import pformat
return pformat(out)
class myclass(object):
foo = 'foo'
def __init__(self):
self.bar = 'bar'
def __str__(self):
return dump(self)
c = myclass()
print c
。
BTW __str__
是执行__str__
时打印的内容,它会调用该对象上的repr
方法。有关如何控制对象格式的详细信息,请参阅the Python documentation of __repr__
。
print obj
上述代码的输出是
__repr__
答案 1 :(得分:0)
在经过大量搜索之后,我偶然发现了这个我通常导入的Dumper等效物。 https://salmon-protocol.googlecode.com/svn-history/r24/trunk/salmon-playground/dumper.py