如何在python中执行泛型类型转换,类似于我在C#.NET中使用的以下机制:
string typetoConvertTo = "System.String";
string value = (string)Convert.ChangeType( "1", Type.GetType( typetoConvertTo ));
typetoConvertTo = "System.Int32";
int value1 = (int)Convert.ChangeType( "1", Type.GetType(typetoConvertTo));
Python有各种类型的类型转换,但是我需要像.NET中的上述方法那样更通用的东西,因为我存储了类型,需要稍后执行泛型转换。
value = str(100)
value1 = int("100")
答案 0 :(得分:3)
类是Python中的第一类对象。
>>> t = str
>>> t(123)
'123'
>>> d = {'str': str}
>>> d['str'](123)
'123'
答案 1 :(得分:1)
如果您因某种原因想要延迟类型转换,只需将值和类型转换存储为一对。
>>> entry = (int, '123')
>>> entry[0](entry[1])
123
如果你有一整批要做的事,你可能会有像
这样的东西conversions_to_do = {}
conversions_to_do[int] = []
conversions_to_do[str] = []
conversions_to_do[int].append('123')
conversions_to_do[int].append('456')
conversions_to_do[str].append(1.86)
展开它与第一个例子类似。
我不得不问,为什么不直接转换呢?可能有一种更简单,更直接的方法来解决您试图解决的实际问题。
答案 2 :(得分:0)
您不需要类型映射字典,而可以使用eval
,但这几乎就像作弊:
>>> t = "int"
>>> v = "3"
>>> eval(t)(v)
3