动态引入python类

Borland一系的开发工具,RTTI功能都比较强,这使得我们很容易Create a object from classname。不过borland框架的限制是所有的对象需要从TObject继承。当然,当遇到不同的构造函数(constructor)的时候,创建对象可能会出现意外。造成内存泄露,对象狂野,流程不可预期~~~。

这个微妙的时刻,接口可以帮助我们实现模式里的AOP切分。其实什么面向方面、面向对象、各种模式在某些时刻会产生矛盾,强烈要求一致、业务分割、松耦合,关键是业务的时限,要求你三两天拿出模块来,死扣书本的人会输到一塌糊涂。

话说RTTI的这个由字符串到类实体创建可以帮助我们渡过耦合这个难关。想好了各种接口,就让配置文件起作用吧,module们,动作起来吧。

python里从字符串到类实体通过资料实现思路如下:
1. 创建模块文件,如importx.py:
[sourcecode language=”python”]
#
class X:
def test(self):
print “test from x”
[/sourcecode]

2. 调用模块文件
[sourcecode language=”python”]
m = __import__(“importx”)
obj = m.X()
obj.test()
[/sourcecode]

如果制定好X遵循某接口,你的系统也许就是只需要“配置”一下。

参考资料:
1. Importing Python Modules
2. How to dynamically load a Python class

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注