Car Class Python Program

Car Class Python Program

Your code has several problems:

  • You have not created an instance: mycar = Car(year, make, speed)

  • You have renamed mycar to my_car: ie my_car.brake()

  • The class attribute is called self.__speed, it is not called self.speed.(accelerate, brake and get_speed methods)


class Car:
    def __init__(self, year, make, speed):
        self.__year_model = year
        self.__make = make
        self.__speed = 0

    def set_year_model(self, year):
        self.__year_model = year

    def set_make(self, make):
        self.__make = make

    def set_speed(self, speed):
        self.__speed = 0

    def get_year_model(self):
        return self.__year_model

    def get_make(self):
        return self.__make

    def get_speed(self):
        return self.__speed

    #methods
    def accelerate(self):
        self.__speed +=5

    def brake(self):
        self.__speed -=5

    def get_speed(self):
        return self.__speed

def main():

    year = input(Enter the car year: )
    make = input(Enter the car make: )
    speed = 0

    mycar = Car(year, make, speed)

    #Accelerate 5 times
    mycar.accelerate()
    print(The current speed is: , mycar.get_speed())
    mycar.accelerate()
    print(The current speed is: , mycar.get_speed())
    mycar.accelerate()
    print(The current speed is: , mycar.get_speed())
    mycar.accelerate()
    print(The current speed is: , mycar.get_speed())
    mycar.accelerate()
    print(The current speed is: , mycar.get_speed()) 

    #Brake 5 times
    mycar.brake()
    print(The current speed after brake is: , mycar.get_speed())
    mycar.brake()
    print(The current speed after brake is: , mycar.get_speed())
    mycar.brake()
    print(The current speed after brake is: , mycar.get_speed())
    mycar.brake() 
    print(The current speed after brake is: , mycar.get_speed())
    mycar.brake()
    print(The current speed after brake is: , mycar.get_speed())

#Call the main function
main()

This code should work for you:

def makeCarClass():
    def initialize(self, model, color, currSpeed, maxSpeed, mpg, currFuel, mileage):
        self[model] = model 
        self[color] = color
        self[currSpeed] = currSpeed
        self[maxSpeed] = maxSpeed
        self[mpg] = mpg 
        self[currFuel] = currFuel
        self[mileage] = mileage
        return self

    def changeSpeed(self, amount):
        newSpeed = self[currSpeed] + amount
        if newSpeed >= self[maxSpeed]:
            self[currSpeed] = self[maxSpeed]
        elif newSpeed <=0:
            self[currSpeed] = 0
        else:
            self[currSpeed] = newSpeed

    def move(self, miles):
        fuelNeeded = miles/self[mpg]
        currFuel = self[currFuel]
        if currFuel <= fuelNeeded:
            self[currFuel] = 0
            self[mileage] = self[mileage] + currFuel * self[mpg]
            print(Warning: Your car has run out of fuel)

        else:
            self[currFuel] = currFuel - fuelNeeded
            self[mileage] = self[mileage] + miles

    return {initialize:initialize, changeSpeed:changeSpeed, move:move}


carClass = makeCarClass()

car1 = carClass[initialize]({},Ferrari, yellow, 0, 200, 10, 40, 0)
car2 = carClass[initialize]({},Honda, black, 0, 120, 30, 40, 0)
print(car1)

Car Class Python Program

class Car:

def __init__(self,year,make):
    self.__year_model=year
    self.__make=make
    self.__speed=0

def accelerate(self):
    self.__speed +=5

def brake(self):
    self.__speed -=5

def get_speed(self):
    return self.__speed

new file

import car

def main():
my_car = car.Car(2019,Toyota)

for i in range(5):
    my_car.accelerate()
    print(Speed = ,my_car.get_speed())

for i in range(5):
    my_car.brake()
    print(Speed = ,my_car.get_speed())

main()

Leave a Reply

Your email address will not be published. Required fields are marked *