【发布时间】:2021-03-22 15:08:35
【问题描述】:
这是练习:
为CarRecord编写特殊方法__str__()。
带输入的示例输出:2009 'ABC321'
Year: 2009, VIN: ABC321
以下代码是我想出的,但我收到了一个错误:
TYPEERROR: __str__ returned non-string
我不知道我哪里出错了。
class CarRecord:
def __init__(self):
self.year_made = 0
self.car_vin = ''
def __str__(self):
return "Year:", (my_car.year_made), "VIN:", (my_car.car_vin)
my_car = CarRecord()
my_car.year_made = int(input())
my_car.car_vin = input()
print(my_car)
【问题讨论】:
-
您没有从
__str()__()方法返回字符串。 -
return
"Year:" + my_car.year_made + "VIN:" + my_car.car_vin或者使用fstring获取 str 格式 -
使用 f 字符串:
return f"Year: {self.year_made} VIN: {self.car_vin}" -
return不像print(),用逗号分隔值构成一个元组,它不会将它们连接成一个字符串。 -
当您执行
return "a", "b"时,它与return ("a", "b")相同,即您返回一个包含 2 个字符串而不是一个字符串的元组(元组与列表非常相似)。将其更改为return "Year: " + my_car.year_made + " VIN: " + my_car.car_vin