Python反射和类型转换
-
05-07-2019 - |
题
在Python中,str(),int(),float()等函数通常用于执行类型转换。但是,这些要求您在开发时了解要转换为的类型。我正在尝试编写的一些Python代码的子问题如下:
给定两个变量 foo
和 bar
,找到 foo
的类型。 (在开发时不知道,因为这是通用代码。)然后,尝试将 bar
转换为 foo
的任何类型。如果无法做到这一点,请抛出异常。
例如,假设您调用执行此 conv
的函数。它的签名看起来像
def conv(foo, bar) :
# Do stuff.
它会被称为:
result = conv(3.14, "2.718") # result is now 2.718, as a float.
解决方案
使用 foo .__ class __
获取 foo
的类型。然后调用它将bar转换为foo的类型:
def conv(foo, bar) :
return foo.__class__(bar)
当然,只有当 foo
的类型具有知道如何转换bar的构造函数时,这才有效。
其他提示
这是最好的:
type(foo)(bar)
type(foo)
绝对是最好的,如果你想检查一个类型然后“键入”是最好的方法,我在 python 2.7 - 3.2.2,type()
完美无缺。
不隶属于 StackOverflow