You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中从类类型获取类名及泛型类名称的实现方法

Python 获取类名(支持普通类、继承类与泛型类)

普通类与继承类的类名获取

对于普通类和继承类,直接访问类的__name__属性就能拿到类名,这是Python原生提供的属性,完全不用字符串处理:

class Foo:
    pass

class Bar(Foo):
    pass

def print_class_name(klass):
    print(klass.__name__)

print_class_name(Foo)  # 输出: Foo
print_class_name(Bar)  # 输出: Bar

泛型类的类名解析

如果要处理泛型类(比如list[Foo]这种带类型参数的泛型),需要用到typing模块里的get_origin和get_args方法,这两个方法能帮你拆分泛型的原始类型和参数类型,同样是原生API,避免字符串操作:

from typing import get_origin, get_args

def parse_generic_class(generic_type):
    # 获取泛型的原始类(比如list[Foo]里的list)
    origin_class = get_origin(generic_type)
    if origin_class:
        print(f"泛型原始类名: {origin_class.__name__}")
        # 获取泛型的参数类列表(比如list[Foo]里的Foo)
        arg_classes = get_args(generic_type)
        for idx, arg in enumerate(arg_classes, 1):
            print(f"泛型参数类名{idx}: {arg.__name__}")

# 测试单参数泛型
parse_generic_class(list[Foo])
# 输出:
# 泛型原始类名: list
# 泛型参数类名1: Foo

# 测试多参数泛型
parse_generic_class(dict[str, int])
# 输出:
# 泛型原始类名: dict
# 泛型参数类名1: str
# 泛型参数类名2: int

内容的提问来源于stack exchange,提问作者jacob_g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:05:12