Python中的反射

3 投票
1 回答
8149 浏览
提问于 2025-04-16 09:26

我在找关于Python中反射的一些信息。我找到了一篇维基百科的文章,上面有一段代码示例:

# without reflection
Foo().hello()

# with reflection
getattr(globals()['Foo'](), 'hello')()

但是我没能让它正常工作。我真正需要的是一种方法,可以直接创建对象。比如说,如果我有一个字符串'Foo',我想得到一个类型为Foo的对象。在Java中,我可以这样做:Class.forName("Foo")

我刚刚发现了这个……真不知道我之前为什么找不到这个: Python有没有类似于Java的Class.forName()的方法?

1 个回答

12

我真正需要的是一种方法来创建这个对象。

这就是 globals()['Foo']() 这部分的作用。

对我来说,这个方法有效:

>>> class Foo:
...   def __init__(self): print "Created a Foo!"
...
>>> globals()['Foo']()
Created a Foo!
<__main__.Foo instance at 0x02A33350>
>>>

撰写回答