Python中的通用类型转换

时间:2012-02-15 08:38:32

标签: .net python

如何在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")

3 个答案:

答案 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