📅  最后修改于: 2023-12-03 15:06:35.117000             🧑  作者: Mango
当我们想从一个字符串中获取 Python 类(class)时,可以使用 globals()
函数来实现该功能。以下是实现方法:
class_name = "MyClass" # 类名
module_name = "my_module" # 模块名
full_class_name = module_name + "." + class_name # 完整类名
class_ = globals()[full_class_name] # 获取类对象
以下是一个完整的示例代码,用于演示如何从字符串中获取 Python 类:
class MyClass:
pass
module_name = "my_module"
class_name = "MyClass"
full_class_name = module_name + "." + class_name
# 将类添加到全局变量中
globals()[full_class_name] = MyClass
# 获取类对象
class_ = globals()[full_class_name]
# 打印类对象的类型
print(type(class_)) # <class 'type'>
首先,我们在示例代码中定义了一个名为 MyClass
的类。接下来,我们定义了模块名 my_module
和类名 MyClass
。然后,我们将模块名和类名组合成完整类名 my_module.MyClass
。
接下来,我们通过将类对象添加到全局变量中来实现从字符串中获取类的目的。我们使用 globals()
函数来获取全局变量字典,然后将类对象添加到字典中,键为完整类名,值为类对象。
最后,我们通过将完整类名作为键来获取类对象,从而实现了从字符串中获取 Python 类的功能。
需要注意的是,如果类定义在不同的模块中,则需要在获取类对象之前先导入该模块。如果类名发生更改,则需要相应地更改完整类名,以确保代码的正确性。