def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_meta = getattr(module_meta, class_name) obj = class_meta(*args, **kwargs) return obj
from my_modules.my_another_module import *
class MyObject(object):
def test(self):
print 'MyObject.test'
MyObject1().test()
MyObject2().test()
MyAnotherObject().test()
class MyObject1(object):
def test(self):
print 'MyObject1.test'
class MyObject2(object):
def test(self):
print 'MyObject2.test' class MyAnotherObject(object):
def test(self):
print 'MyAnotherObject.test' def createInstance(module_name, class_name, *args, **kwargs):
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
obj = class_meta(*args, **kwargs)
return obj
obj = createInstance("my_modules.my_module", "MyObject")
obj.test()
MyObject.test
MyObject1.test
MyObject2.test
MyAnotherObject.test Traceback (most recent call last):
File "test.py", line 12, in <module>
obj = createInstance("my_modules.my_module", "MyObject")
File "test.py", line 7, in createInstance
module_meta = __import__(module_name, globals(), locals(), [class_name])
ImportError: No module named my_modules.my_module
Failed to execute script test import my_modules.my_module
def createInstance(module_name, class_name, *args, **kwargs):
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
obj = class_meta(*args, **kwargs)
return obj
obj = createInstance("my_modules.my_module", "MyObject")
obj.test() import sys
sys.path.append(...)
def createInstance(module_name, class_name, *args, **kwargs):
module_meta = __import__(module_name, globals(), locals(), [class_name])
class_meta = getattr(module_meta, class_name)
obj = class_meta(*args, **kwargs)
return obj
obj = createInstance("my_modules.my_module", "MyObject")
obj.test() 以上就是详解使用Python中动态创建类实例代码的详细内容,更多请关注Gxl网其它相关文章!
查看更多关于详解使用Python中动态创建类实例代码的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did85371