python如何通过类名获取类型

python如何通过类名获取类型

作者:William Gu发布时间:2026-01-14阅读时长:0 分钟阅读次数:11

用户关注问题

Q
如何通过类名动态创建类的实例?

我有一个类名的字符串,想通过这个字符串创建对应类的实例,应该怎么做?

A

用类名字符串动态创建实例的方法

可以通过内置的globals()函数获取当前全局命名空间中的类对象,例如:

class_name = 'MyClass'
cls = globals()[class_name]
instance = cls()

这样就能根据类名字符串创建对应的实例。如果类不在当前全局命名空间,可能需要用 getattr 模块或其他方式获取。

Q
如何判断一个变量是否是特定类的实例?

在代码运行时怎么判断某个变量的类型是否是给定的类名?

A

使用 isinstance 函数判断变量类型

可以使用 isinstance(obj, ClassName) 来判断某个变量是否是指定类的实例。例如:

if isinstance(obj, MyClass):
    print('是 MyClass 的实例')

如果只知道类名的字符串,可以先获取类对象,再用 isinstance 进行判断。

Q
如何从字符串获取模块内的某个类?

若有模块名和类名的字符串,怎样获取到那个类对象?

A

通过 importlib 和 getattr 获取类对象

可以使用 importlib 模块动态导入模块,然后用 getattr 获取类对象。示例如下:

import importlib
module = importlib.import_module('module_name')
cls = getattr(module, 'ClassName')

这样就能根据模块名和类名字符串获取到类的类型。