相关内容:

  • __import__
  • importlib
  • 动态导入的使用场景

首发时间:2018-02-23 16:06


__import__:

功能:

  • 是一个函数,可以在需要的时候动态导入模块

使用:

  • __import__(模块名)
  • 但对于多级目录,只会导入第一级
  • 目录结构:
mo1=__import__("des")
mo2=__import__("child.child")
mo3=__import__("child") print(mo1,mo2,mo3)#mo3与mo2相同 #同级目录使用模块对象来调用
mo1.B()
mo1.fun2() #对于目录下的,动态导入只会导入第一级目录
mo2.child.A()#虽然没有具体定义类体,但无错就是成功
mo2.child.fun1()
mo3.child.fun1()

importlib:

介绍:

  • 是一个模块,可以进行动态导入模块

用法:

  • importlib.import_module("模块名")
import importlib
mo1= importlib.import_module('des')
mo2= importlib.import_module('child.child')
print(mo1,mo2)#mo2直接到child.child des_B= mo1.B()
mo1.fun2() mo2.fun1()

动态导入模块的使用场景:

  • 动态切换模块
  • 使用反射判断是否有对应类、方法,无则设置
import importlib
mo3= importlib.import_module('child')
def func4():
print(" run in func4") if hasattr(mo3,"child1"):
print("yes")
c=getattr(mo3,"child")
else: #没有则设置
setattr(mo3,"func4",func4) mo3.func4()
  • 其他。。。

动态导入模块:__import__、importlib、动态导入的使用场景的更多相关文章

  1. 动态导入模块__import__("str") importlib标准库

    解释器内部使用的为__import__('str') #!/usr/bin/env python # Author:Zhangmingda print('我是aa类 ') #被import的时候就执行 ...

  2. 面向对象【day08】:动态导入模块(八)

    本节内容 1.概述 2.知识回顾 3.动态导入模块 一.概述 我们之前导入模块都是用import,或者from ... import ....这种模式去导入模块,那如果我们如何实现只用字符串就可以导入 ...

  3. python------Socket网略编程+动态导入模块

    上节课程回顾: 静态变量:与类无关,不能访问类里的任何属性和方法. 类方法:只能访问类变量. 属性:把一个方法变成静态属性, 反射: __new__:先于__init__执行: __call__: c ...

  4. python_111_动态导入模块

    lib下aa.py文件内容: class C: def __init__(self): self.name='alex' from lib import aa#正常导入 print(aa.C) 动态导 ...

  5. python_反射:动态导入模块

    官方推荐方法: test_mod.py def hi(): print('Hi') test.py import importlib q = importlib.import_module('test ...

  6. 封装,封装的原理,Property ,setter ,deleter,多态,内置函数 ,__str__ , __del__,反射,动态导入模块

    1,封装 ## 什么是封装 what 对外隐藏内部的属性,以及实现细节,并给外部提供使用的接口 学习封装的目的:就是为了能够限制外界对内部数据的方法 注意 :封装有隐藏的意思,但不是单纯的隐藏 pyt ...

  7. Python_getattr+__import__ 实现动态加载模块、类对象或函数

    __import__() 语法 __import__(name[, globals[, locals[, fromlist[, level]]]]) 参数 name -- 字符串,模块的导入路径 说明 ...

  8. importlib 根据字符串导入模块

    应用: Django中间件,rest framework 组件的全局配置文件 import importlib path = "abc.def.foo" module_path,c ...

  9. import变量名,导入模块

    想要把不同的模块名赋值到变量,然后import进来   直接使用下面的方法是不行的: moudle="os" import moudle   会提示下面的错误: ImportErr ...

随机推荐

  1. 【xsy2304】哈 最短路

    题目大意:有一个$n$个点,$m$条有向边的图,有$q$组询问. 每次询问:从$a$到$b$,经过不超过$c$条边,且依次经过的边边权递增,问最短路为多少,无解输出-1. 数据范围:$n≤150$,$ ...

  2. 线程安全-005-synchronized其他概念

    一.Synchornized锁重入 例子程序: package com.lhy.thread01; public class SyncDouble1 { public synchronized voi ...

  3. 使用maven构建多模块项目,分块开发

    在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署. 我们假设有这样一个商城项目,包括以下几个模块: 商城前台(shop) 管 ...

  4. RocketMQ 集群监控以及Hello World

    RocketMQ 目前有两个版本  alibaba版本和apache版本 一.alibaba版本 tomcat部署: apache-tomcat-7.0.90.tar.gz jdk7 虚拟机redha ...

  5. .net 连接kafka

    新建两个控制台项目,一个生产者,一个消费者,使用Nuget安装Confluent.Kafka 生产者 static void Main(string[] args) { var config = ne ...

  6. 从零开始学 Web 之 Ajax(四)接口文档,验证用户名唯一性案例

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  7. C#效率优化(2)-- 方法内联

    一.JIT编译器可以通过将方法内联展开(Method Inline Expansion)来提升效率,类似C++中的内联函数(Inline Function),与C++的内联函数不同的是,C#并不支持内 ...

  8. google 身份验证器

    谷歌身份验证器原理 就是服务器与客户端算法相同

  9. 如何做自己的服务监控?spring boot 1.x服务监控揭秘

    1.准备 下载可运行程序:http://www.mkyong.com/spring-boot/spring-boot-hello-world-example-jsp/ 2.添加服务监控依赖 <d ...

  10. #7 Python顺序、条件、循环语句

    前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一.顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编 ...