class and defining __str__

Tags: , ,



This is the exercise:

Write the special method __str__() for CarRecord.

Sample output with input: 2009 'ABC321'

Year: 2009, VIN: ABC321

The following code is what I have came up with, but I’m receiving an error:

TYPEERROR: __str__ returned non-string

I can’t figure out where I went wrong.

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)

Answer

You’re returning a tuple using all those commas. You should also be using self, rather than my_car, while inside the class. Try like this:

    def __str__(self):
        return f"Year: {self.year_made}, VIN: {self.car_vin}"

The f before the string tells Python to replace any code in braces inside the string with the result of that code.



Source: stackoverflow