在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]!="_"]
再次感谢你:)
答案 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)
这很粗糙,但这是我认为你正在寻找的递归。请注意,您必须在某个时刻手动停止它。底部没有海龟,它一直在继续。