Skip to main content
 首页 » 编程设计

python 自动(或动态)导入包中的类

2024年08月12日37me-sa

我正在编写某种自动化测试套件,我想确保包“tests”中包含的类在运行时自动导入到主命名空间中,而不是将它们添加到 __init__ 包的文件。

这是我目前的脚本:

import os 
 
for dirpath, dirnames, filenames in os.walk('tests'): 
    for filename in filenames: 
        if filename.lower().endswith(('.pyc', '__init__.py')): continue 
 
        module = ".".join([dirpath, filename.split('.')[0]]) 
 
        print module 

如果我使用 modulename = __import__(module),类将添加到模块“modulename”,而不是主命名空间。

我的问题是,如何将它们导入当前命名空间?

所以我可以做这样的事情:

testcase = TestCase() 
testcase.run() 
results = testcase.results() 

或主脚本中的任何内容,而无需显式导入类。

提前致谢!

感谢大家的回复和帮助我。

请您参考如下方法:

要从某个模块获取类,可能有更好的方法,但这里是让您入门的通用方法

mod = __import__("mod") 
for klass in vars(mod): 
    o =  getattr(mod, klass) 
    if type(o) == type: 
        print o