Отражение в питоне - PullRequest
       6

Отражение в питоне

2 голосов
/ 05 января 2011

Я пытаюсь найти информацию об отражении в python. Я нашел статью в Википедии, которая содержала фрагмент кода:

# without reflection
Foo().hello()

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

Я не смог заставить это работать. Что мне действительно нужно, так это способ просто создать экземпляр объекта. Поэтому, если у меня есть строка 'Foo', я хочу получить объект типа Foo. Как и в Java, я мог бы сказать что-то вроде: Class.forName ("Foo")

Просто нашел это ... удивительно, почему я не мог найти это раньше: Имеет ли python эквивалент Java Class.forName ()?

1 Ответ

8 голосов
/ 05 января 2011

Что мне действительно нужно, так это способ просто создать экземпляр объекта.

Вот что делает globals()['Foo']() часть.

И у меня это работает:

>>> class Foo:
...   def __init__(self): print "Created a Foo!"
...
>>> globals()['Foo']()
Created a Foo!
<__main__.Foo instance at 0x02A33350>
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...