Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Python中的泛型类型转换_.net_Python - Fatal编程技术网

.net Python中的泛型类型转换

.net Python中的泛型类型转换,.net,python,.net,Python,如何在python中执行类似于在C#.NET中使用的以下机制的泛型类型转换: Python对单个类型进行了类型转换,但我需要一些更通用的方法,如.NET中的上述方法,因为我正在存储类型,需要稍后执行通用转换 value = str(100) value1 = int("100") 如果出于某种原因想要延迟类型转换,只需将值和类型转换成对存储即可 >>> entry = (int, '123') >>> entry[0](entry[1]) 123 如果你有

如何在python中执行类似于在C#.NET中使用的以下机制的泛型类型转换:

Python对单个类型进行了类型转换,但我需要一些更通用的方法,如.NET中的上述方法,因为我正在存储类型,需要稍后执行通用转换

value = str(100)
value1 = int("100")

如果出于某种原因想要延迟类型转换,只需将值和类型转换成对存储即可

>>> 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)
展开它类似于第一个示例


我不得不问,为什么不直接转换它呢?可能有一种更简单、更直接的方法来解决您试图解决的实际问题。

类是Python中的一流对象

>>> t = str
>>> t(123)
'123'
>>> d = {'str': str}
>>> d['str'](123)
'123'

您不需要类型映射dict,可以使用
eval
,但这几乎就像作弊一样:

>>> t = "int"
>>> v = "3"
>>> eval(t)(v)
3

要转换为的类型实际上以字符串格式存储在数据库中。因此,当我需要对它执行操作时,我更喜欢泛型转换,而不是基于该值的巨大开关循环。一个类型查找字典
type\u lookup={'int':int,'string':str,etc}
然后使用
type\u lookup[type\u string](value)
来执行转换可能就是你想要的。hmm。不确定这是否是通用的,因为在我的例子中,第一行中使用的值-str来自数据库。用于索引词典的
'str'
值是来自数据库的值。它可以是
'super-duper-string'
而不是
d={'super-duper-string':str}
d['super-duper-string'](123)
d
只是您的类型/转换查找映射。
>>> t = "int"
>>> v = "3"
>>> eval(t)(v)
3