将一个变量的类型转换为另一个变量,这两种类型都未知.不查找开关或if/elif/else的列表



所以类似于:*更正:

def myfunc(x, y):
if type(x) == type(y):
print(x + y)
else:
x = type(y)(x) # mistake was x = type(y).__name__(x)
print(x + y)
# Error (Not anymore, works like a charm): 
# y = typename(y)
# TypeError: 'str' object is not callable

x是int,y是string,但假设我们不知道

这将不起作用,因为type(x).__name__将以字符串形式返回类型的名称。

因此,假设x的值是'some_string',调用type(x)将返回

<类"str">

type(x).__name__将返回

'sr'

类是可调用的,但文字字符串不是。

您需要更换

typename = type(x).__name__
y = typename(y) # or even if only typename(y)

用类似的东西。

my_type = type(x)
y = my_type(y) # or even if only typename(y) 

请注意:

  • y必须可转换为x类型的类。因此,如果x是int,y是类似于"abc"的字符串,则此方法将抛出ValueError
  • x的类型必须支持__add__方法,否则,此函数将抛出一个TypeError

它显示了错误,因为您试图将值传递给纯字符串。存储在"typename"中的值是"str",它只是一个字符串。文字字符串不能接受参数。

最新更新