相关内容:

  • __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. Facebook的一些基本操作(网页版)

    前期准备 1,注册一次Facebook账号,新建一个应用取到应用id 2,引进Facebook的SDK到页面中: 在js中引进以下代码,初始化 // facebook window.fbAsyncIn ...

  2. appium键盘事件

    driver.pressKeyEvent(66); 附录 keycode 电话键 KEYCODE_CALL 拨号键 5KEYCODE_ENDCALL 挂机键 6KEYCODE_HOME 按键Home ...

  3. HTTP请求代码整理

    HTTP请求代码整理 类别 代码 注释 1xx – 信息提示 100 继续 101 切换协议 2xx - 成功 200 确定.客户端请求已成功 201 已创建 202 已接受 203 非权威性信息 2 ...

  4. 从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件

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

  5. Idea 编写 Spark 示例代码并打包成Jar

    说明:本人是在Linux下搭建的单机Spark环境,也是在Linux下使用Idea14.02进行代码编辑 1. 打开IDEA,在欢迎界面从右下角的Configure -> Plugins进入,安 ...

  6. idea集成uglifyjs2

    项目中可能会多次修改某些*.js文件,但是引用的是*.min.js, 所以需要再改完源码后生成压缩的min.js uglifyjs是个不错的工具,但是单独用略显麻烦,如果能整合到idea就好了.正好i ...

  7. Freemarker教程1(基本使用)

    简介 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是 ...

  8. 突发奇想想学习做一个HTML5小游戏

    前言: 最近一期文化馆轮到我分享了,分享了两个,一个是关于童年教科书的回忆,一个是关于免费电子书的.最后我觉得应该会不敌web,只能说是自己在这中间回忆了一下那个只是会学习的年代,那个充满梦想的年代. ...

  9. Vxlan学习笔记——原理

    1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有 ...

  10. 光流法详解之二(HS光流)

    Horn–Schunck光流算法[1]是一种全局方法估算光流场. 参考博文:https://blog.csdn.net/hhyh612/article/details/79216021 假设条件: H ...