繁体   English   中英

Python 反射和类型转换

[英]Python Reflection and Type Conversion

在Python中,一般使用str()、int()、float()等函数进行类型转换。 但是,这些要求您在开发时知道要转换为哪种类型。 我正在尝试编写的一些 Python 代码的子问题如下:

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

例如,假设您调用执行此conv的 function 。 它的签名看起来像

def conv(foo, bar) :
    # Do stuff.

它会被称为:

result = conv(3.14, "2.718")  # result is now 2.718, as a float.

那将是最好的:

type(foo)(bar)

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

def conv(foo, bar) :
    return foo.__class__(bar)

当然,这只有在foo的类型有一个知道如何转换 bar 的构造函数时才有效。

type(foo)

绝对是最好的,如果你想检查一个类型,那么“类型”是最好的方法,我在python 2.7 - 3.2.2, type()工作得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM