python動態加載類並調用


本文鏈接:https://www.cnblogs.com/tujia/p/14468242.html

 

一、原理

1)sys.path 添加環境變量目錄

sys.path.append(<dir_name>)

2)__import__ 函數導入模塊

_module = __import__(<module_name>)

3)getattr 獲取類

getattr(<module_name>, <class_name>)

注:如果需要實例化類的話,后面加個括號:getattr(<module_name>, <class_name>)()

 

二、實例

說明:加載 tasks 目錄里的所以類,並執行 run 方法

import sys
import pathlib
from tools import istring

sys.path.append('tasks')


def run(task):
    items = []
    if task != '':
        _module = __import__(task)
        _class = istring.ucwords(task)
        items.append(getattr(_module, _class)())
    else:
        for x in pathlib.Path('tasks').iterdir():
            if x.name == '__pycache__':
                continue
            _module = __import__(x.stem)
            _class = istring.ucwords(x.stem)
            items.append(getattr(_module, _class)())

    for task in items:
        task.run()


if __name__ == '__main__':
    task = sys.argv[1] if len(sys.argv) == 2 else ''
    run(task)

注:istring 是我自己寫的助手類,這個需要按自己的類命名規則處理一下 ~

 

本文鏈接:https://www.cnblogs.com/tujia/p/14468242.html


完。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM