python中动态加载模块和类方法实现
短信预约 -IT技能 免费直播动态提醒
python中动态加载模块和类方法实现测试代码
文件名: mytest.py 具体代码如下:
注意:模块名,类名,方法名都是变量。
#coding=UTF-8
class TestClass:
def sub(self,a,b):
return a-b
def add(self,a,b):
return a+b
def echo(self):
print "test"
def main():
class_name = "TestClass" #类名
module_name = "mytest" #模块名
method = "echo" #方法名
module = __import__(module_name) # import module
print "#module:",module
c = getattr(module,class_name)
print "#c:",c
obj = c() # new class
print "#obj:",obj
print(obj)
obj.echo()
mtd = getattr(obj,method)
print "#mtd:",mtd
mtd() # call def
mtd_add = getattr(obj,"add")
t=mtd_add(1,2)
print "#t:",t
mtd_sub = getattr(obj,"sub")
print mtd_sub(2,1)
if __name__ == '__main__':
main()
执行后输出如下:
> "D:\Python27\python.exe" "D:\test\class="lazy" data-src\mytest.py"
#module: <module 'mytest' from 'D:\test\class="lazy" data-src\mytest.py'>
#c: mytest.TestClass
#obj: <mytest.TestClass instance at 0x025F2AA8>
<mytest.TestClass instance at 0x025F2AA8>
test
#mtd: <bound method TestClass.echo of <mytest.TestClass instance at 0x025F2AA8>>
test
#t: 3
1
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341