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")
4 个回答
0
你不需要一个类型映射的字典,可以直接使用 eval
,不过这有点像是作弊:
>>> t = "int"
>>> v = "3"
>>> eval(t)(v)
3
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)
解开这个过程和第一个例子差不多。
不过我想问一下,为什么不直接进行转换呢?也许有更简单直接的方法来解决你真正想解决的问题。
6
在Python中,类是一等公民。
>>> t = str
>>> t(123)
'123'
>>> d = {'str': str}
>>> d['str'](123)
'123'