类型错误:_ _ str _ _返回非字符串(元组类型)
TypeError: __str__ returned non-string (type tuple)
当我们从方法返回元组值时,会出现Python“TypeError: _ _ str _ _ returned non-string (type tuple)” 。要解决该错误,请使用格式化字符串文字将表达式包含在字符串中并返回一个字符串。__str__()
下面是错误如何发生的示例。
主程序
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return self.name, self.salary # 👈️ this is a tuple emp = Employee('Carl', 50) # ⛔️ TypeError: __str__ returned non-string (type tuple) print(emp)
我们从该方法返回了一个整数__str__()
,但该方法必须返回一个字符串。
如果需要在字符串中包含表达式,则可以使用
格式化字符串文字。
主程序
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return f'{self.name} {self.salary}' emp = Employee('Carl', 50) print(emp) # 👉️ Carl 50
格式化字符串文字 (f-strings) 让我们通过在字符串前加上
f
.确保将表达式括在大括号 –{expression}
中。
_
_ str _ _ ()
方法由内置str(object)
函数调用format()
并
print()
返回对象的非正式字符串表示形式。
万一你错误地声明了一个元组,元组有多种构造方式:
- 使用一对括号
()
创建一个空元组 - 使用尾随逗号 –
a,
或(a,)
- 用逗号分隔项目 –
a, b
或(a, b)
- 使用
tuple()
构造函数
如果您打算返回元组的元素,请在其特定索引处访问它,例如my_tuple[0]
.
如果元素不是字符串,则使用str()
类将其转换为字符串,例如str(my_tuple[0])
.
结论#
当我们从方法返回元组值时,会出现Python“TypeError: _ _ str _ _ returned non-string (type tuple)” 。要解决该错误,请使用格式化字符串文字将表达式包含在字符串中并返回一个字符串。__str__()