0

Python では、すべての属性を検索するには、次のようにします。

dir(object)

object.__dict__.keys()

しかし、私が望むのは、最初のブランチだけでなく、2 番目のブランチにあるものをリストすることです。これは一種の再帰操作ですか?

どうやってするか?

みたいだ

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

これを試しても、同じ結果が複製されます:

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

すべての結果は、str

更新:dir()コマンドが のリストを返すようです。これstrは単純なハックです。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 に答える