如何在 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()
我有一个包含 ~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()