Подтвердить что ты не робот

Инициализировать объект класса по имени

Так как все в python является объектом, мне было интересно, есть ли способ инициализировать объект класса, используя имя класса

например,

class Foo:
    """Class Foo"""

Как я могу получить доступ к этому классу с помощью "Foo", т.е. что-то вроде c = get_class("Foo")

4b9b3361

Ответ 1

Если класс находится в вашей области:

get_class = lambda x: globals()[x]

Если вам нужно получить класс из модуля, вы можете использовать getattr:

import urllib2
handlerClass = getattr(urllib2, 'HTTPHandler')

Ответ 3

Я думаю, что ваше поисковое отражение см. http://en.wikipedia.org/wiki/Reflection_%28computer_science%29#Python

Или лучший пример из немецкой википедии:

>>> # the object
>>> class Person(object):
...    def __init__(self, name):
...        self.name = name
...    def say_hello(self):
...        return 'Hallo %s!' % self.name
...
>>> ute = Person('Ute')
>>> # direct
>>> print ute.say_hello()
Hallo Ute!
>>> # Reflexion
>>> m = getattr(ute, 'say_hello')()
>>> # (equals ute.say_hello())
>>> print m
Hallo Ute!

из http://de.wikipedia.org/wiki/Reflexion_%28Programmierung%29#Beispiel_in_Python