如何在 Python 中通过其名称获取 class

How can I get a class by its name in Python

我有一个包含 ~100 classes 的模块,我想获得名称与我提供的字符串相匹配的 class。

我使用 inspect 生成了 classes 和名称的列表,并对其进行了迭代,但是还有其他方法吗?

我有:

def get_class_by_name(input_name_string):
    for (key, cls) in inspect.getmembers(my_module, inspect.isclass):
        if key == input_name_string:
            return cls

您可以简单地在模块上使用 getattr :

import my_module

getattr(my_module, class_name)

您可以为此使用字典,字符串始终是 class 的键。

代码如下:

class A:
    def __init__(self):
        self.name = "A"
    def print(self):
        print(self.name)

class B:
    def __init__(self, name):
        self.name = name
    def print(self):
        print(self.name)

def get_class_by_name(input_name_string, dict):
    return dict[input_name_string]

if __name__ == '__main__':
    my_classes = {}
    my_classes["A"] = A()
    my_classes["B"] = B

    C = get_class_by_name("A", my_classes)
    C.print()

    D = get_class_by_name("B", my_classes)("Hallo")
    D.print()