Python 版 Instance Activator
之前写一个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相关推荐
- 微信支付SDK(python版)
最近一段时间一直在搞微信平台开发,最近的v3.37版本微信支付接口变化贼大,所以就看着php的demo移植为 python版,为了保持一致,所以接口方法基本都没有变,这样的好处就是不用写demo了,看 ...
- 24点游戏python版
24点游戏python版 问题描述与规则 24点游戏是经典的纸牌益智游戏.常见游戏规则:从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表 ...
- 【Leetcode】刷题之路3(python版)
回溯专题 1.回溯算法的本质是n叉树的深度优先搜索,同时,需要注意剪枝减少复杂度. 2.回溯算法三部曲 确定参数和返回值 回溯函数终止条件 单层循环 3.回溯法思路 回溯法是一种算法思想,而递归是一种 ...
- 统计学习圣经!经典教材《统计学习导论》Python版
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:张倩,来源:机器之心 <统计学习导论>很经典,但习题用 ...
- python数据结构与算法分析_数据结构与算法(Python版)
为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...
- 经典教材《统计学习导论》现在有了Python版
来源:机器之心 本文约1000字,建议阅读5分钟 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现. 斯坦福经典教材<The Element o ...
- 赞!经典教材《统计学习导论》终于有Python版了
<统计学习导论>是数据科学家中最受欢迎的书籍之一,旨在介绍机器学习算法背后的概念,但这本书的习题都是用R语言实现的,这对于主要使用 Python 语言的机器学习研究者来说不太友好. 为了解 ...
- Manning大神牵头,斯坦福开源Python版NLP库Stanza:涵盖66种语言
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:机器之心 对于斯坦福 NLP 库,我们一定不会陌生,但是这一库主要基于 Java ...
- 【重磅】Python版《统计学习导论》来啦!附代码链接!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实 ...
最新文章
- 并发编程之 源码剖析 线程池 实现原理
- mysql workbench中删除数据表记录提示出错的问题
- 软件工程模块开发卷宗_软件智能化再进一步,未来人人都能开发软件?
- Python 的文件IO相关操作说明
- gin redis 链接不上_php + redis 高并发商品秒杀 完整业务模拟流程 实现方案
- MySQL查询count(*)、count(1)、count(field)的区别收集
- jee过滤器应用场景_将涡轮增压器添加到JEE Apps
- MySQL中information_schema
- 橡皮擦的英语_从填字涂鸦到英语启蒙,家长口中的儿童版“秘密花园”涂色游戏测评【玩具测评】...
- 博文目录(最新更新:2018.6.6)
- python定时器 循环_Python循环定时服务功能(相似contrab)
- android gms测试,谷歌GMS认证需要测试哪些项目?
- angular 居中_垂直居中的N种方法
- Java实验14 计算多个二维图形的面积之和
- 【大学生辩论赛】如何练习自己的辩论口才
- 关于c语言杨辉三角编写的改进
- windows快捷方式
- ubuntu 安装多版本cuda,及切换版本方法及常见问题记录
- Ipopt输出的含义
- 滴滴出行与Uber的合并历程回顾
热门文章
- 强化学习(ICML2022)
- 使用VSTS的Git进行版本控制(五)——从Team Services Portal管理分支
- 类似美团的iOS地图定位及调用苹果系统导航
- Self-Supervised Difference Detection for Weakly-Supervised Semantic Segmentation
- 51单片机2位数简易计算器C语言实现
- adb logcat调试发现因为td问题导致Android 7.0崩溃的具体原因
- [原创]开始富盛SBO程序开发框架:Hello, World!
- 关于python中的复数类型、下列说法错误的是_关于 Python中的复数,下列说法错误的是( )_学小易找答案...
- Real-Time Rendering 4th 译文《九 基于物理渲染(中)》
- 改善服务器的安全性:要求用户使用RSA密钥登录