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

如何将字符串类名转换为类构造器并实现类型转换函数foo

实现逻辑

核心思路是所有Python内置类(int/str/float等)都统一挂载在builtins内置模块下,优先从该模块查询构造器即可解决原有方案不支持内置类的问题。

具体实现步骤:

  1. 导入builtins模块,通过getattr方法传入字符串类名获取对应的构造器对象
  2. 校验获取到的对象是否可调用,避免传入非法类名时抛出预期外的异常
  3. 调用构造器转换待处理的字符串值即可

代码实现

import builtins

def foo(type_str: str, value: str):
    constructor = getattr(builtins, type_str, None)
    if not callable(constructor):
        raise ValueError(f"不支持的目标类型:{type_str}")
    return constructor(value)

效果验证

  • foo("int", "12") 输出结果为 12(整数类型)
  • foo("str", "12") 输出结果为 "12"(字符串类型)
  • foo("float", "12") 输出结果为 12.0(浮点数类型)

如果需要同时支持自定义类,可以扩展查询逻辑,内置类查询不到时再从当前模块检索:

import sys
import builtins

def foo(type_str: str, value: str):
    constructor = getattr(builtins, type_str, None) or getattr(sys.modules[__name__], type_str, None)
    if not callable(constructor):
        raise ValueError(f"不支持的目标类型:{type_str}")
    return constructor(value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:54:06