如何列出dir(对象)的每个项目?

时间:2013-02-25 17:30:40

标签: python

在Python中,为了找到所有属性,有:

dir(object)

object.__dict__.keys()

但我想要的是列出第二个分支中的内容,而不仅仅是第一个分支,它是一种递归操作?

怎么做?

就像

dir(dir(x) for x in dir(math))

试过这个并且仍然得到相同的重复结果:

>>> for i in dir(math):
...     for j in i:
...         print dir(j)

所有结果都是str

的方法

更新:似乎dir() commande返回str列表,这是一个简单的黑客攻击;我试图排除reserved names,看看我是否走得更远,但结果只是str

[i for i in dir(math) if i[0]!="_"]

[type(i) for i in dir(math) if i[0]!="_"]

再次感谢你:)

1 个答案:

答案 0 :(得分:2)

object.__dict__.keys()   # Just keys
object.__dict__.values() # Just values
object.__dict__.items()  # Key-value pairs

编辑等一下!我想我误会了。您想列出对象的属性,以及这些属性的属性等等吗?尝试这样的事情:

def discover(object):
    for key in dir(object):
        value = getattr(object, key)
        print key, value
        discover(value)

这很粗糙,但这是我认为你正在寻找的递归。请注意,您必须在某个时刻手动停止它。底部没有海龟,它一直在继续。