可能重复:
Is there a function in Python to print all the current properties and values of an object?
在交互式python会话中,我大量使用dir
函数来了解对象的结构。不幸的是,dir
只显示属性的名称,而不是它们的值,所以它没有尽可能多的信息。此外,dir
的打印输出不会尝试格式化输出以便于阅读(IOW:dir
不要做stinkin'漂亮打印)。< / p>
在哪里可以找到“现成的”数据检查实用程序,它提供更多信息,格式更好,
dir
?
例如,dir
的一个更有用的替代方法是打印与每个属性关联的值(根据需要进行适当格式化),并将此输出格式化以便于阅读。对于其值可调用的属性,它将打印其签名和/或其文档字符串的第一行。
谢谢!
答案 0 :(得分:3)
尝试使用inspect模块,它可以为您提供各种各样的功能,包括函数的原始源代码,堆栈帧等等:
>>> class Foo:
... def __init__(self, a, b, c):
... self.a = a
... self.b = b
... self.c = c
... def foobar(self):
... return 100
...
>>> f = Foo(50, 'abc', 2.5)
>>> import inspect
>>> inspect.getmembers(f)
[('__doc__', None), ('__init__', <bound method Foo.__init__ of <__main__.Foo instance at 0x7f0d76c440e0>>), ('__module__', '__main__'), ('a', 50), ('b', 'abc'), ('c', 2.5), ('foobar', <bound method Foo.foobar of <__main__.Foo instance at 0x7f0d76c440e0>>)]
>>>
>>> def add5(x):
... """adds 5 to arg"""
... return 5 + x
...
>>> inspect.getdoc(add5)
'adds 5 to arg'
>>> # What arguments does add5 take?
>>> inspect.getargspec(add5)
ArgSpec(args=['x'], varargs=None, keywords=None, defaults=None)
>>> # Format that nicely...
>>> inspect.formatargspec(inspect.getargspec(add5))
'((x,), None, None, None)'
>>>
答案 1 :(得分:1)
查看pprint
from pprint import pprint
pprint(object_you_want_to_see)
答案 2 :(得分:1)
如果&#34;对象的结构&#34; ,则表示对象的实例属性,请注意dir
(某事物)< / strong>如果存在名称为__dir()__
的用户定义方法,则调用某事。__dir__()
,否则会检查某事。__dict__
以及某事的类型(我猜它会调用类型__dir__()
或检查类型&#39; s __dict__
)
因此我相信对象的实例属性由其__dict__
属性给出。
但是有些对象没有实例属性,例如整数。
所以,我认为如果你测试一个对象的__dict__
属性的存在,如果它存在,获取它的值将给你需要获得的东西:不仅是属性的名称,而且这样命名的对象。
由于你要求格式化输出,我用cPickle给出了这个例子(模块是一个对象,就像Python中的所有内容一样)
import cPickle
for name,obj in cPickle.__dict__.iteritems() :
print '%-25s --> %r' % (name, obj)
结果
load --> <built-in function load>
PicklingError --> <class 'cPickle.PicklingError'>
__version__ --> '1.71'
UnpickleableError --> <class 'cPickle.UnpickleableError'>
dump --> <built-in function dump>
__builtins__ --> <module '__builtin__' (built-in)>
Unpickler --> <built-in function Unpickler>
compatible_formats --> ['1.0', '1.1', '1.2', '1.3', '2.0']
BadPickleGet --> <class 'cPickle.BadPickleGet'>
__package__ --> None
dumps --> <built-in function dumps>
UnpicklingError --> <class 'cPickle.UnpicklingError'>
PickleError --> <class 'cPickle.PickleError'>
HIGHEST_PROTOCOL --> 2
__name__ --> 'cPickle'
loads --> <built-in function loads>
Pickler --> <built-in function Pickler>
__doc__ --> 'C implementation and optimization of the Python pickle module.'
format_version --> '2.0'
还有 help()功能,可以显示您要搜索的文档。