Python Object-Oriented Python Instant Objects Master Class

Michael Crowley
Michael Crowley
1,352 Points

Object-Oriented Python: Master Class Challenge Task 2

Hello All,

I'm having trouble figuring out the issue with my code below; receiving an error "Bummer: Try again!" but not much detail outside of that.

I've tried manipulating the run_lap function a few different ways:

  • Using fuel_remaining instead of self.fuel_remaining
  • Returning the value of fuel_remaining
  • Using self.laps instead of laps

I haven't had any luck with these. Any insight would be much appreciated!

Thank you!

racecar.py
class RaceCar:
    laps = 0

    def __init__(self, color, fuel_remaining, **kwargs):
        self.color = color
        self.fuel_remaining = fuel_remaining
        for key, value in kwargs.items():
            setattr(self, key, value)

    def run_lap(length):
        self.fuel_remaining -= (length * 0.125)
        laps += 1
Michael Crowley
Michael Crowley
1,352 Points

Challenge Prompt: Vrroom!

OK, now let's handle the racecar running laps. Add a laps attribute to the RaceCar class and set it to 0. Add a method named run_lap. It'll take a length argument. It should reduce the fuel_remaining attribute by the length argument multiplied by 0.125 (length * 0.125). Also, increment the laps attribute by 1 each time the run_lap method is called.

1 Answer

Julian Addison
Julian Addison
13,298 Points

So, you've basically solved the challenge, the one mistake is the scope of the laps attribute. Within your run_lap method, you just have to make sure to reference the self keyword. Otherwise, when you try to run the method, python will think that you are creating a new local variable laps and you'll get an error like UnboundLocalError: local variable 'laps' referenced before assignment.

self.laps += 1