Python相当于Ruby的ObjectSpace?

时间:2010-02-23 12:29:19

标签: python ruby module metaprogramming

我有一个存储在var中的类的名称,我需要从中创建一个对象。 但是我不知道它定义在哪个模块中(如果我这样做,我只会调用getattr(module,var),但我确实知道它是导入的。

我应该检查每个模块并测试是否在那里定义了类?我怎么在python中做到这一点?

如果我在同一个var中有模块+类,怎么能从中创建一个对象怎么办? (即var ='module.class') 干杯, 泽

3 个答案:

答案 0 :(得分:1)

globals()[classname]应该这样做。

更多代码:http://code.activestate.com/recipes/285262/

答案 1 :(得分:0)

默认情况下,不会在Python中将类添加到全局注册表中。您需要迭代所有导入的模块并查找它。

答案 2 :(得分:0)

不是将类名存储为字符串,为什么不将类对象存储在var中,这样就可以直接实例化它。

>>> class A(object):
...     def __init__(self):
...         print 'A new object created'
... 
>>> class_object = A
>>> object = class_object()
A new object created
>>>