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 同学表白的祝福语简短
16 烟草客户新年祝福语简短
17 女宝宝满月简短祝福语
18 女生求婚朋友祝福语简短