通过 importlib模块 反射字符串的对象
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Django 1.10.4
>>> from crm import models #使用importlib模块的import_module方法就可以实现动态的导入
>>> import importlib >>> models.Course._meta
<Options for Course>
>>> models.Course._meta.verbose_name
'course'
>>> models.Course._meta.model_name
'course'
>>> models.Customer._meta.verbose_name
'客户信息'
>>>
>>>
>>> models.Customer._meta
<Options for Customer>
>>> models.Customer
<class 'crm.models.Customer'>
>>> m = models.Customer
>>> importlib.import_module('crm')
<module 'crm' from '/home/ligq/python/django/mycrm/crm/__init__.py'>
>>> importlib.import_module('crm.models')
<module 'crm.models' from '/home/ligq/python/django/mycrm/crm/models.py'>
#反射出来字符串'crm.models' 的对象<class 'crm.models.UserProfile'>
>>> mc = importlib.import_module('crm.models')
>>> mc.UserProfile
<class 'crm.models.UserProfile'> #这时候就可以操作这个对象了
>>> mc.UserProfile.objects.all()
<QuerySet [<UserProfile: 销售>, <UserProfile: 学生>, <UserProfile: 管理员>]>

importlib模块 反射字符串的对象的更多相关文章

  1. Python - importlib 模块

    importlib 模块可以根据字符串来导入相应的模块 目录结构: 在根目录下创建 importlib_test.py 和 aaa/bbb.py bbb.py: class Person(object ...

  2. Python面试题之Python对象反射、类反射、模块反射

    python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 一.getattr 对象获取 class Manager: role = &quo ...

  3. 如何通过字符串形式导包(importlib模块的使用)

    1 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定 ...

  4. angular的多个模块执行 angular里 字符串与对象的互转

    1.disable : true ,禁用 2.$timeout 计时器 $interval.cancel(timer); 3.app.run();  可以不使用控制器就开启数据,但适合$rootsco ...

  5. importlib模块和split的结合使用

    1.给定一个文件结构,在main.py中于运用importlib 导入a.py运行其中的show()方法 ├── clazz │ ├── __init__.py │ ├── a.py │ └── b. ...

  6. Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

    实现接口类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=AB ...

  7. Logging模块 + traceback模块 + importlib模块 + requests模块

    Logiging模块日志级别 CRITICAL = 50FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = 20DEBUG = 10N ...

  8. Python 实现抽象类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)

    实现抽象类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=AB ...

  9. python学习之-- importlib模块

    importlib 模块 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员 ...

随机推荐

  1. 线段树专题—ZOJ1610 Count the Colors

    题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...

  2. mysql 远程登陆不上

    当使用 TCP/IP 连接 mysql 时, 出现 : Can't connect to MySQL server on 'xxx.xxx.xxx.xxx.'(111) 这个错误. 经过重复折腾: 确 ...

  3. 跟着实例学习设计模式(9)-桥接模式bridge(结构型)

    桥接模式属于结构型设计模式. 设计意图:将抽象部分与实现部分分离.使它们都能够独立的变化. 一看到设计意图,大家可能有些发懵,我们看到的继承和接口不都是抽象和实现分离的吗?尤其是接口和抽象类都是这种实 ...

  4. Koa2 + Mongoose + Log4js 持久化日志

    代码地址如下:http://www.demodashi.com/demo/12466.html  之前做的项目是采用 Express 框架进行搭建的,其中的日志管理采用了 winston + Post ...

  5. .net 定时执行 windows 服务

    1.新建项目 --> Windows 服务 2.Service1.cs代码 using System; using System.Collections.Generic; using Syste ...

  6. VueJS构造器:new Vue({})

    构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例来启动的: var vm = new Vue({ // 选项 }) 属性与方法 每个 Vue 实例都会代理其 dat ...

  7. BigDecimal的String类型

    java本身对浮点型的计算会丢失精度,这个一定要注意,必须要用BigDecimal的String类型才能解决精度的问题. BigDecimal一共有四个构造方法: 我们在计算商品价格的时候,一定要用B ...

  8. spring中的异步事件

    这里讲解一下Spring对异步事件机制的支持,实现方式有两种: 1.全局异步 即只要是触发事件都是以异步执行,具体配置(spring-config-register.xml)如下: Java代码   ...

  9. items" does not support runtime expression

    <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 更改为  <%@tagl ...

  10. Chapter 4 马尔科夫链

    4.1 引言 现在要研究的是这样一种过程: 表示在时刻的值(或者状态),想对一串连续时刻的值,比如:,, ... 建立一个概率模型. 最简单的模型就是:假设都是独立的随机变量,但是通常这种假设都是没什 ...