之前写一个Python 版本的DbRowFactory(链接),   在初始化DbRowFactory时候, 除了要传cursor外, 还需要传一个RowClass类, 还有一个RowClass类的模块名, 用起来不爽, 改造了一下. 这个事情的一个副产品Python 版 Intance Activator, 代码如下:

最新的代码和DbRowFactory都放在codeplex上了.

#! /usr/bin/env python#coding=utf-8

import inspectimport sys

__author__ = 'Harry Liu, <harrychinese@gmail.com>'__date__ = '16 Feb 2012'__version__="0001"

##reference doc#http://www.cnblogs.com/sevenyuan/archive/2010/12/06/1898056.html#http://stackoverflow.com/questions/4513192/python-dynamic-class-names#http://stackoverflow.com/questions/1796180/python-get-list-of-al-classes-within-current-module

def createIntance(full_class_name,*args,**kwargs):    '''    instantiate class dynamically    [arguments]    full_class_name: full class name that you want to instantiate, included package and module name if has    *args: list style arguments in class constructor    *kwargs: dict style arguments in class constructor    [return]    an instance of this full_class_name    [example]    import pyObjectCreator    full_class_name="knightmade.logging.Logger"    logger=pyObjectCreator.create_intance(full_class_name,'logname')    '''    class_meta=getClassMeta(full_class_name)    if class_meta!=None:        obj=class_meta(*args,**kwargs)    else:        obj=None    return obj

def getClassMeta(full_class_name):       '''    get class meta object of full_class_name, then we can use this meta object to instantiate full_class_name    [arguments]    full_class_name: full class name that you want to instantiate, included package and module name if has    [return]    an instance of this full_class_name    [example]    import pyObjectCreator    full_class_name="knightmade.logging.Logger"    loggerMeta=pyObjectCreator.getClassMeta(full_class_name)    '''    namespace=full_class_name.strip().rsplit('.',1)    if len(namespace)==1:        class_name=namespace[0]        class_meta=_getClassMetFromCurrModule(class_name)    else:        module_name=namespace[0]        class_name=namespace[1]        class_meta=_getClassMetaFromOtherModule(class_name,module_name)    return class_meta

def _getClassMetFromCurrModule(class_name):    result=None    module_name="__main__"    for name, obj in inspect.getmembers(sys.modules[module_name]):        if inspect.isclass(obj):            if name==class_name:                result=obj                break    return result

def _getClassMetaFromOtherModule(class_name, module_name):    module_meta=__import__(module_name,globals(), locals(),[class_name])    if module_meta!=None:        class_meta=getattr(module_meta,class_name)    else:        class_meta=None    return class_meta

Python 版 Instance Activator相关推荐

  1. 微信支付SDK(python版)

    最近一段时间一直在搞微信平台开发,最近的v3.37版本微信支付接口变化贼大,所以就看着php的demo移植为 python版,为了保持一致,所以接口方法基本都没有变,这样的好处就是不用写demo了,看 ...

  2. 24点游戏python版

    24点游戏python版 问题描述与规则 24点游戏是经典的纸牌益智游戏.常见游戏规则:从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表 ...

  3. 【Leetcode】刷题之路3(python版)

    回溯专题 1.回溯算法的本质是n叉树的深度优先搜索,同时,需要注意剪枝减少复杂度. 2.回溯算法三部曲 确定参数和返回值 回溯函数终止条件 单层循环 3.回溯法思路 回溯法是一种算法思想,而递归是一种 ...

  4. 统计学习圣经!经典教材《统计学习导论》Python版

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:张倩,来源:机器之心 <统计学习导论>很经典,但习题用 ...

  5. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

  6. 经典教材《统计学习导论》现在有了Python版

    来源:机器之心 本文约1000字,建议阅读5分钟 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现. 斯坦福经典教材<The Element o ...

  7. 赞!经典教材《统计学习导论》终于有Python版了

    <统计学习导论>是数据科学家中最受欢迎的书籍之一,旨在介绍机器学习算法背后的概念,但这本书的习题都是用R语言实现的,这对于主要使用 Python 语言的机器学习研究者来说不太友好. 为了解 ...

  8. Manning大神牵头,斯坦福开源Python版NLP库Stanza:涵盖66种语言

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:机器之心 对于斯坦福 NLP 库,我们一定不会陌生,但是这一库主要基于 Java ...

  9. 【重磅】Python版《统计学习导论》来啦!附代码链接!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实 ...

最新文章

  1. 并发编程之 源码剖析 线程池 实现原理
  2. mysql workbench中删除数据表记录提示出错的问题
  3. 软件工程模块开发卷宗_软件智能化再进一步,未来人人都能开发软件?
  4. Python 的文件IO相关操作说明
  5. gin redis 链接不上_php + redis 高并发商品秒杀 完整业务模拟流程 实现方案
  6. MySQL查询count(*)、count(1)、count(field)的区别收集
  7. jee过滤器应用场景_将涡轮增压器添加到JEE Apps
  8. MySQL中information_schema
  9. 橡皮擦的英语_从填字涂鸦到英语启蒙,家长口中的儿童版“秘密花园”涂色游戏测评【玩具测评】...
  10. 博文目录(最新更新:2018.6.6)
  11. python定时器 循环_Python循环定时服务功能(相似contrab)
  12. android gms测试,谷歌GMS认证需要测试哪些项目?
  13. angular 居中_垂直居中的N种方法
  14. Java实验14 计算多个二维图形的面积之和
  15. 【大学生辩论赛】如何练习自己的辩论口才
  16. 关于c语言杨辉三角编写的改进
  17. windows快捷方式
  18. ubuntu 安装多版本cuda,及切换版本方法及常见问题记录
  19. Ipopt输出的含义
  20. 滴滴出行与Uber的合并历程回顾

热门文章

  1. 强化学习(ICML2022)
  2. 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支
  3. 类似美团的iOS地图定位及调用苹果系统导航
  4. Self-Supervised Difference Detection for Weakly-Supervised Semantic Segmentation
  5. 51单片机2位数简易计算器C语言实现
  6. adb logcat调试发现因为td问题导致Android 7.0崩溃的具体原因
  7. [原创]开始富盛SBO程序开发框架:Hello, World!
  8. 关于python中的复数类型、下列说法错误的是_关于 Python中的复数,下列说法错误的是( )_学小易找答案...
  9. Real-Time Rendering 4th 译文《九 基于物理渲染(中)》
  10. 改善服务器的安全性:要求用户使用RSA密钥登录