0

在 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()命令返回了一个列表str,这是一个简单的 hack;我试图排除reserved names,看看我是否走得更远,但结果只是str

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

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

再次感谢你 :)

4

1 回答 1

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)

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

于 2013-02-25T17:31:54.307 回答