所以类似于:*更正:
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",它只是一个字符串。文字字符串不能接受参数。