python中反射用法实例
本文实例讲述了python中反射用法。分享给大家供大家参考。具体如下:
importsys,types,new
def_get_mod(modulePath):
try:
aMod=sys.modules[modulePath]
ifnotisinstance(aMod,types.ModuleType):
raiseKeyError
exceptKeyError:
#Thelast['']isveryimportant!
aMod=__import__(modulePath,globals(),locals(),[''])
sys.modules[modulePath]=aMod
returnaMod
def_get_func(fullFuncName):
"""Retrieveafunctionobjectfromafulldotted-packagename."""
#Parseoutthepath,module,andfunction
lastDot=fullFuncName.rfind(u".")
funcName=fullFuncName[lastDot+1:]
modPath=fullFuncName[:lastDot]
aMod=_get_mod(modPath)
aFunc=getattr(aMod,funcName)
#Assertthatthefunctionisa*callable*attribute.
assertcallable(aFunc),u"%sisnotcallable."%fullFuncName
#Returnareferencetothefunctionitself,
#nottheresultsofthefunction.
returnaFunc
def_get_Class(fullClassName,parentClass=None):
"""Loadamoduleandretrieveaclass(NOTaninstance).
IftheparentClassissupplied,classNamemustbeofparentClass
orasubclassofparentClass(orNoneisreturned).
"""
aClass=_get_func(fullClassName)
#AssertthattheclassisasubclassofparentClass.
ifparentClassisnotNone:
ifnotissubclass(aClass,parentClass):
raiseTypeError(u"%sisnotasubclassof%s"%
(fullClassName,parentClass))
#Returnareferencetotheclassitself,notaninstantiatedobject.
returnaClass
defapplyFuc(obj,strFunc,arrArgs):
objFunc=getattr(obj,strFunc)
returnapply(objFunc,arrArgs)
defgetObject(fullClassName):
clazz=_get_Class(fullClassName)
returnclazz()
if__name__=='__main__':
aa=getObject("inetservices.services.company.Company")
bb=applyFuc(aa,"select",['select*fromngsys2',None])
printbb
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
10 喜得孙子祝福语简短唯美
11 婚礼祝福语简短朴实大众
12 员工周年祝福语大全简短
13 家长回复节日祝福语简短
14 简短生日祝福语老同学
15 夜雨祝福语简短10字
16 蛋糕祝福语简短闺蜜
17 部门过年祝福语简短独特
18 简短精炼的结婚祝福语