python 动态加载类和函数
__import__() 函数用于动态加载类和函数 。
如果一个模块经常变化就可以使用 __import__() 来动态载入。
语法
__import__ 语法:
__import__(name[, globals[, locals[, fromlist[, level]]]])
参数说明:
name -- 模块名
英文文档:
__import__(name, globals=None, locals=None, fromlist=(), level=0)
getattr() 是 Python 内置的一个函数,可以用来获取一个对象的属性值或方法。
其基本语法为:getattr(object, name[, default])
其中,object 是要获取属性值或方法的对象;name 是要获取的属性名或方法名;default 是可选参数,当指定的属性或方法不存在时,会返回 default 的值。
getattr() 可以通过对象实例或类名来获取属性值或方法,也可以获取内置函数、内置类型和标准库中的属性和方法。
Example1
package_name = "sens.modules.app.{}".format(self.protocol) package = __import__(package_name, fromlist=[self.protocol]) package.check(rule, self.data)
Example2
#index.py print ('index') def sayHello(): print('sayHello ...') class Cat(): def __init__(self): print('cat init') def run(self,name): print("cat:{} , running".format(name)) #test.py # coding:utf-8 mod = __import__("index") mod.sayHello() CatClass = getattr(mod,"Cat") cat = CatClass() methodRun = getattr(cat,'run') methodRun("Tom") __index__ sayHello ... cat init cat:Tom , running