如何根据类型转换对象类型?

时间:2016-01-22 11:11:55

标签: python types instance

我有:

x = float(1.0)
y = int(2)

t1 = type(x)
t2 = type(x).__name__

如果我打印t1t2,我可以看到以下内容:

print t1
>>> <type 'float'>

print t2
>>> float

如何使用t1t2y更改为float类型,但代码最少?

4 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

x = float(1.0)
y = int(2)

y = type(x)(y)
print(type(y))

<强>输出

float

如果您需要使用 name 类型执行此操作,只需将x的类型指定给变量并将其用作函数:

x = float(1.0)
y = int(2)

t = type(x)
y = t(y)
print(type(y))

<强>输出

float

答案 1 :(得分:1)

对于在调用时强制传递参数的类型(如intlist等),只需使用对类型的引用,然后调用它。

>>> x = 1.
>>> y = 2
>>> t = type(x)
>>> t(y)
2.0
>>> tup = (1,2)
>>> lst = [3,4]
>>> t2 = type(tup)
>>> t2(lst)
(3, 4)

答案 2 :(得分:1)

您可以先使用__builtins__模块将代表type名称的字符串(例如"float")转换为该类型(此处更多信息here) :

def get_type_by_name(type_name):
    return getattr(__builtins__, type_name)
the_type = get_type_by_name('float')

然后,进行转换:

y = the_type(x)

您也可以使用eval,但通常eval is (harshly) discouraged

答案 3 :(得分:0)

你已经有了很好的答案,但由于编程也是关于玩东西的,所以这里有另一种选择:

y.__class__(x)