Python中的泛型类型转换

3 投票
4 回答
4378 浏览
提问于 2025-04-17 13:04

我想知道在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'

撰写回答