按名称初始化类对象

时间:2010-10-27 07:50:01

标签: python

由于python中的所有内容都是一个对象,我想知道是否有一种方法可以使用类的名称初始化一个类对象

例如,

class Foo:
    """Class Foo"""

我如何通过“Foo”访问此类,例如c = get_class("Foo")

3 个答案:

答案 0 :(得分:44)

如果课程在你的范围内:

get_class = lambda x: globals()[x]

如果您需要从模块中获取课程,可以使用getattr

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

答案 1 :(得分:1)

您听说过inspect module吗?

查看我找到的this snippet

答案 2 :(得分:-2)

我认为你的搜索反思 见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

相关问题