我有一个将一些变量作为字符串保存的类。例如
x = "1"
y = "2.0"
z = "timedelta(seconds=10)"
正如您在上面看到的,变量实际上是 int/float/timedelta 类型。我需要用它们的真实类型返回这些变量。(x 应该作为 int 返回,y 应该作为 float 返回,z 应该作为 datetime.timedelta 返回)
我正在考虑更改getattr并尝试在返回值之前找出类型,但是我做的小测试似乎不起作用:
from datetime import datetime, timedelta
def test():
string = "timedelta(seconds=10)"
x = eval(string)
print x
print type(x)
if type(x) == 'datetime.timedelta':
print "YES"
else:
print "NO"
输出是:
0:00:10
<type 'datetime.timedelta'>
NO
为什么 if-case 返回 false?有没有更好的方法用真实类型返回这些变量?