zoukankan      html  css  js  c++  java
  • python动态加载(二)——动态加载类

    有时候需要动态加载类里的方法,业务逻辑由用户提供,框架对此一无所知,只能动态导入

    abstract_business.py

    from abc import ABCMeta, abstractmethod
    
    
    # 业务逻辑的抽象父类
    class AbstractBusiness(metaclass=ABCMeta):
    
        @abstractmethod
        def execute(self,*args,**kwargs):
            pass

    business.py

    from distribute_compute.abstract_business import AbstractBusiness
    
    
    class Business(AbstractBusiness):
    
        def execute(self, it):
            return it.upper()

    同目录下的dynamic_import.py

    import importlib
    
    if __name__ == "__main__":
        # 动态导入module
        module_ = importlib.import_module('business', package='distribute_compute')
        # 动态导入class
        clazz = getattr(module_, 'Business')
        func_name = 'execute'
        # 动态导入方法
        func = getattr(clazz(), func_name)
    
        res = func('it')
        print(res)

    通过动态传入包名,模块名和类名方法名,实现了类方法的动态导入

  • 相关阅读:
    003.iSCSI客户端管理
    002.iSCSI服务端配置
    001.iSCSI简介
    004.RAID删除
    003.RAID管理
    002.RAID创建
    001.RAID简介
    001.hadoop及hbase部署
    001.Parted工具使用
    007.LVM查看命令
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14102634.html
Copyright © 2011-2022 走看看