Ответ 1
Если класс находится в вашей области:
get_class = lambda x: globals()[x]
Если вам нужно получить класс из модуля, вы можете использовать getattr
:
import urllib2
handlerClass = getattr(urllib2, 'HTTPHandler')
Так как все в python является объектом, мне было интересно, есть ли способ инициализировать объект класса, используя имя класса
например,
class Foo:
"""Class Foo"""
Как я могу получить доступ к этому классу с помощью "Foo", т.е. что-то вроде c = get_class("Foo")
Если класс находится в вашей области:
get_class = lambda x: globals()[x]
Если вам нужно получить класс из модуля, вы можете использовать getattr
:
import urllib2
handlerClass = getattr(urllib2, 'HTTPHandler')
Вы слышали о проверять модуль?
Отметьте этот фрагмент, который я нашел.
Я думаю, что ваше поисковое отражение см. 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