python中动态加载模块和类方法实现

简介:

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\src\mytest.py"
#module: <module 'mytest' from 'D:\test\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

目录
相关文章
|
2天前
|
Java Serverless Python
探索Python中的并发编程与`concurrent.futures`模块
探索Python中的并发编程与`concurrent.futures`模块
10 4
|
3天前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
|
12天前
|
存储 程序员 Python
Python类的定义_类和对象的关系_对象的内存模型
通过类的定义来创建对象,我们可以应用面向对象编程(OOP)的原则,例如封装、继承和多态,这些原则帮助程序员构建可复用的代码和模块化的系统。Python语言支持这样的OOP特性,使其成为强大而灵活的编程语言,适用于各种软件开发项目。
14 1
|
13天前
|
Python
如何在 Python 中导入模块
【8月更文挑战第29天】
18 1
|
13天前
|
Python
|
13天前
|
数据采集 JSON 算法框架/工具
我常用的几个经典Python模块
我常用的几个经典Python模块
|
12天前
|
UED Python
探索Python中的魔法方法:打造自定义字符串表示
【8月更文挑战第31天】在Python的世界里,魔法方法是那些以双下划线开头和结尾的特殊方法,它们为类提供了丰富的功能。本文将带你走进这些魔法方法的背后,特别是__str__和__repr__,揭示如何通过它们来定制我们的对象在被打印或转换为字符串时的外观。我们将从基础用法开始,逐步深入到高级技巧,包括继承与重写,最终实现一个优雅的字符串表示方案。准备好了吗?让我们开始这段代码之旅吧!
|
13天前
|
开发者 Python
什么是 python 模块?
【8月更文挑战第29天】
9 0
|
9月前
|
Python
跟我从0学Python——类的继承和多态
类的继承和多态 —— 面向对象编程的扩展与灵活性
|
4月前
|
搜索推荐 Python
Python学习 -- 类的继承
Python学习 -- 类的继承
33 0