2017-05-27 21 views
2

我想要找到繼承「基類」的模塊中的所有類,並且模塊由字符串指定。
例如尋找由字符串指定的模塊/類

for c in find_classes('robo.extras.contrib') : 
o = c() 
o.process(argv = self.argv[1:]) 

在上述例子中,find_classes看起來通過該繼承的類與方法processrobo.extras.contrib所有模塊,其實例化和運行的方法。

我一直在尋找python.org,但似乎沒有找到答案,如果任何人都可以指向正確的方向,甚至在這裏給我一個快速樣本,我會很高興。

謝謝:)

回答

0
import inspect, importlib 
def find_classes(module, with_method=None): 
    module = importlib.import_module(module) 
    return [ 
     c for _, c in inspect.getmembers(module, inspect.isclass) 
     if not with_method or with_method in dir(c) 
    ] 

然後:

for c in find_classes('robo.extras.contrib', with_method='process'): 
... 
+0

絕對精彩!我預計它會複雜得多,但是你的代碼片段很短並且容易理解。謝謝 :) – Rayne