Python反射和类型转换

dsi*_*cha 7 python reflection introspection type-conversion python-datamodel

在Python中,str(),int(),float()等函数通常用于执行类型转换.但是,这些要求您在开发时了解要转换为的类型.我正在尝试编写的一些Python代码的子问题如下:

给出两个变量,foobar找到类型foo.(在开发时不知道,因为这是通用代码.)然后,尝试转换bar为任何类型foo.如果无法做到这一点,请抛出异常.

例如,假设您调用执行此操作的函数conv.它的签名看起来像

def conv(foo, bar) :
    # Do stuff.
Run Code Online (Sandbox Code Playgroud)

它会被称为:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.
Run Code Online (Sandbox Code Playgroud)

nos*_*klo 16

那将是最好的:

type(foo)(bar)
Run Code Online (Sandbox Code Playgroud)


oef*_*efe 11

使用foo.__class__获得的类型foo.然后调用它将bar转换为foo的类型:

def conv(foo, bar) :
    return foo.__class__(bar)
Run Code Online (Sandbox Code Playgroud)

当然,这仅适用于foo具有知道如何转换条形的构造函数的类型.