本文实例讲述了python中反射用法。分享给大家供大家参考。具体如下:
import sys, types,newdef _get_mod(modulepath): try: amod = sys.modules[modulepath] if not isinstance(amod, types.moduletype): raise keyerror except keyerror: # the last [''] is very important! amod = __import__(modulepath, globals(), locals(), ['']) sys.modules[modulepath] = amod return amoddef _get_func(fullfuncname): retrieve a function object from a full dotted-package name. # parse out the path, module, and function lastdot = fullfuncname.rfind(u.) funcname = fullfuncname[lastdot + 1:] modpath = fullfuncname[:lastdot] amod = _get_mod(modpath) afunc = getattr(amod, funcname) # assert that the function is a *callable* attribute. assert callable(afunc), u%s is not callable. % fullfuncname # return a reference to the function itself, # not the results of the function. return afuncdef _get_class(fullclassname, parentclass=none): load a module and retrieve a class (not an instance). if the parentclass is supplied, classname must be of parentclass or a subclass of parentclass (or none is returned). aclass = _get_func(fullclassname) # assert that the class is a subclass of parentclass. if parentclass is not none: if not issubclass(aclass, parentclass): raise typeerror(u%s is not a subclass of %s % (fullclassname, parentclass)) # return a reference to the class itself, not an instantiated object. return aclassdef applyfuc(obj,strfunc,arrargs): objfunc = getattr(obj, strfunc) return apply(objfunc,arrargs)def getobject(fullclassname): clazz = _get_class(fullclassname) return clazz()if __name__=='__main__': aa=getobject(inetservices.services.company.company) bb=applyfuc(aa, select, ['select * from ngsys2',none]) print bb
希望本文所述对大家的python程序设计有所帮助。