Python中使用字符串形式类型名转换变量值报错求解
解决思路
你遇到的报错原因很明确:mytype是字符串"int",而不是Python的int类型对象,字符串本身不能像函数一样被调用,所以会抛出TypeError: 'str' object is not callable。下面是几种可行的解决方法:
方法一:通过globals()获取类型对象
全局命名空间的globals()字典里包含了所有已定义的对象,包括内置类型,直接用字符串作为键取出对应的类型即可:mytype = "int" myvalue = "35" my_int_val = globals()[mytype](myvalue)方法二:用类型映射字典(推荐,更安全)
如果你的类型范围是固定的,手动创建一个类型映射字典是更稳妥的方式,能避免传入未知字符串时的风险:# 先定义允许的类型映射 type_mapping = { "int": int, "str": str, "float": float # 可根据需求添加自定义类型 } mytype = "int" myvalue = "35" my_int_val = type_mapping[mytype](myvalue)方法三:借助__builtins__获取内置类型
所有Python内置类型都存放在__builtins__中,用getattr可以按名称取出:mytype = "int" myvalue = "35" my_int_val = getattr(__builtins__, mytype)(myvalue)
内容的提问来源于stack exchange,提问作者HappyChappy
相关产品推荐
相关产品推荐

