zoukankan      html  css  js  c++  java
  • python- 动态加载目录下所有的类

    # 背景

    自动化测试框架中model层下有很多类,用来操作mysql的,使用的时候需要把全部的类加载进来,需要使用到动态加载类

    # 解决方法

    使用pkgutil,内置的方法,常用的话有两个方法

    iter_modules(path=None, prefix='')
    Yields (module_loader, name, ispkg) for all submodules on path, or, if path is None, all top-level modules on sys.path.
    path是包的目录路径,prefix是输出时,所有包的名字的前缀。用来获取该path下的子模块或子包。

    walk_packages(path=None, prefix='', onerror=None)
    Yields (module_loader, name, ispkg) for all modules recursively on path, or, if path is None, all accessible modules.
    同上,但是这个方法是递归获取路径下的所有模块。


    具体使用如下:
    # 动态加载modelsql中所有类
    for importer_sql, modname, ispkg_sql in pkgutil.walk_packages(path=modelsql.__path__,
                                                          prefix=modelsql.__name__+'.',
                                                          onerror=lambda x: None):
        exec('from ' + modname + ' import *')

    相当于对目录下所有的类执行了import *的操作

  • 相关阅读:
    创建XNA Shooter游戏——概述
    Android 界面切换与恢复原生界面
    输入和用户界面——SpaceCamera类
    ASP.NET下FCKedit配置及使用参考
    1282. Game Tree 夜
    1122. Game 夜
    1136. Parliament 夜
    hdu 3905 Sleeping 夜
    1195. Ouths and Crosses 夜
    1210. Kind Spirits 夜
  • 原文地址:https://www.cnblogs.com/jwentest/p/10690515.html
Copyright © 2011-2022 走看看