2

関数/クラスがモジュールのどこかに存在するかどうかを知りたいです。モジュールの上位レベル/階層にあるすべてのクラス/関数のリストを生成する方法を知っていますdir() たとえば、モジュールnow()内に関数が存在するかどうかを知りたいとしましょうdatetime:

import datetime
dir(datetime)

しかし、これはより深いレベル (正確には in) に含まれているnow()ため、関数をリストしていません。存在するかどうかを確認するにはどうすればよいですか? それとも、すべてのレベルからすべてをリストする方法はありますか?now()datetime.datetimenow()

4

1 に答える 1

1

このコードは、モジュールの内容を再帰的にリストします。ただし、2 つのサブモジュール/オブジェクト/... が同じ名前を共有している場合は失敗することに注意してください。

import time
import datetime

pool=[] # to avoid loops 

def recdir(d,n=''):
    children_all=dir(d)
    children=[c for c in children_all if c[0]!='_' and not c in pool]
    for child in children:
        pool.append(child)
        full_name=n+"."+child
        print "Found: ","'"+full_name+"' type=",eval("type("+full_name+")")
        string="recdir(d."+child+",'"+full_name+"')"
        print "Evaluating :",string
        time.sleep(0.2)
        eval(string)

recdir(datetime,'datetime')
于 2013-09-20T11:52:54.820 に答える