您可以像这样获得Python对象的完全限定的类名(请参阅this question):

>>> import Queue
>>> q = Queue.PriorityQueue()
>>> def fullname(o):
    return o.__module__ + "." + o.__class__.__name__
...
>>> fullname(q)
'Queue.PriorityQueue'
>>>

您如何进行逆运算,即将像'Queue.PriorityQueue'这样的完全合格的类名称映射到与其关联的类对象(Queue.PriorityQueue)?

最佳答案

您可以在2.7中使用importlib:

from importlib import import_module

name = 'xml.etree.ElementTree.ElementTree'
parts = name.rsplit('.', 1)
ElementTree = getattr(import_module(parts[0]), parts[1])
tree = ElementTree()

在旧版本中,您可以使用 __import__ 函数。默认情况下,返回包导入的顶层信息(例如xml)。但是,如果将非空的fromlist传递给它,它将返回命名模块:
name = 'xml.etree.ElementTree.ElementTree'
parts = name.rsplit('.', 1)
ElementTree = getattr(__import__(parts[0], fromlist=['']), parts[1])
tree = ElementTree()

关于python - 如何在Python中将完全限定的类名映射到其类对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7218865/

10-13 02:39