python 动态创建类

 locals和globs       
locals:
>>> def foo (arg):
x=3
print locals()
>>> foo(5)
{'x': 3, 'arg': 5}
Python有两个内置的函数,locals 和globals,它们提供了基于字典的访问局部和全局变量的方式。
  1. 局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用这个变量,然后停止搜索。
  2. 全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python将使用这个变量然后停止搜索。
动态的创建类的实例:
m = __import__('mymodule')
c = getattr(m, 'myclass')
myobject = c()
如果myclass并不在mymodule的自动导出列表中(__all__),则必须显式地导入,例如:
m = __import__('mymodule', globals(), locals(), ['myclass'])
c = getattr(m, 'myclass')
myobject = c()

posted on 2012-03-08 10:16  夜风之刃  阅读(208)  评论(0编辑  收藏  举报