Python 将字符串转换为类型的方法
我正在使用模块检索有关内存的信息Python 将字符串转换为类型的方法,python,python-3.x,Python,Python 3.x,我正在使用模块检索有关内存的信息 我想做的是能够按对象类型过滤结果,如下所示: objects = [o for o in objects if isinstance(o, Type)] 如果我在代码中指定了类型(例如type=str),那么这是可行的,但我也希望能够让用户写下他们想要过滤的类型。除了当我这样做时,它将被存储为一个字符串,这将给我以下信息: isinstance(test, 'int') Traceback (most recent call last): File "&l
我想做的是能够按对象类型过滤结果,如下所示:
objects = [o for o in objects if isinstance(o, Type)]
如果我在代码中指定了类型(例如type=str),那么这是可行的,但我也希望能够让用户写下他们想要过滤的类型。除了当我这样做时,它将被存储为一个字符串,这将给我以下信息:isinstance(test, 'int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a type or tuple of types
isinstance(测试'int')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:isinstance()arg 2必须是类型或类型的元组
我的问题是,如何获取表示类型的字符串(“int”、“tuple”、“list”等),并将其转换为保存类型本身的变量,以便将其用作isinstance函数的参数
感谢您的帮助,尝试使用:
builtin_types = {t.__name__: t for t in __builtins__.__dict__.values() if isinstance(t, type)}
objects = [o for o in objects if isinstance(o, builtin_types[Type])]
使用字典:
{'int':int,'float':float,…}
如果输入是可信的,那么您可以使用eval
,例如eval('tuple')
@Arn在用户输入上使用eval
是有史以来最糟糕的想法…=>“我也希望能够要求用户写下他们想要过滤的类型”谢谢!我注意到,对于Python3,我们应该执行以下操作:导入内置的内置类型={t.\uuuuu name\uuuuuuu:t表示内置的t.\uuuuu dict\uuuuu.values(),如果是instance(t,type)}