
python如何通过类名获取类型
用户关注问题
如何通过类名动态创建类的实例?
我有一个类名的字符串,想通过这个字符串创建对应类的实例,应该怎么做?
用类名字符串动态创建实例的方法
可以通过内置的globals()函数获取当前全局命名空间中的类对象,例如:
class_name = 'MyClass'
cls = globals()[class_name]
instance = cls()
这样就能根据类名字符串创建对应的实例。如果类不在当前全局命名空间,可能需要用 getattr 模块或其他方式获取。
如何判断一个变量是否是特定类的实例?
在代码运行时怎么判断某个变量的类型是否是给定的类名?
使用 isinstance 函数判断变量类型
可以使用 isinstance(obj, ClassName) 来判断某个变量是否是指定类的实例。例如:
if isinstance(obj, MyClass):
print('是 MyClass 的实例')
如果只知道类名的字符串,可以先获取类对象,再用 isinstance 进行判断。
如何从字符串获取模块内的某个类?
若有模块名和类名的字符串,怎样获取到那个类对象?
通过 importlib 和 getattr 获取类对象
可以使用 importlib 模块动态导入模块,然后用 getattr 获取类对象。示例如下:
import importlib
module = importlib.import_module('module_name')
cls = getattr(module, 'ClassName')
这样就能根据模块名和类名字符串获取到类的类型。