需要修复一些错误 - Python

时间:2016-05-09 19:43:45

标签: python

好的,所以我几乎已经解决了这个问题,但仍然需要一些帮助。我只需要程序在制动后速度小于0时显示错误信息,然后将其重置为0.感谢您的帮助

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

############# year_model################
    def setYear_model(self, year_model):
        self.__year_model = year_model

    def getYear_model(self):
        return self.__year_model

############# Make################
    def setMake(self, make):
        self.__make = make

    def getMake(self):
        return self.make

############# speed################
    def setSpeed(self, speed):
        if speed < 0:
            print("Speed cannot be negative")
        else:
            self.__speed = speed

    def getSpeed(self):
        return self.__speed

    def accelerate(self, speed):
        self.__speed += 5
        return self.__speed

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

############# str ############
    def __str__(self):
        return "Make : " + self.__make + ", Model Year :" + \
        self.__year_model + ", speed = " + str(self.__speed)

以下是运行此定义的代码:

import CarDefinition

def main():
    # Create an instance of Car
    my_car = CarDefinition.Car("2008", "Honda Accord")
    print(my_car)
    print("my_car after instantiating:\n", my_car)

    my_car.setSpeed(2)
    print("my_car after my_car.setSpeed(2):\n", my_car)
    # Accelerate 5 times
    print ("car is accelerating: ")
    for i in range(5):
        my_car.accelerate()
        print ("Current speed: ", my_car.getSpeed())

    print()
    # Brake 7 times
    print ("car is braking: ")
    for i in range(7):
        my_car.brake()
        print ("Current speed: ", my_car.getSpeed())

    print("my_car values at program end:\n", my_car)


main()

2 个答案:

答案 0 :(得分:1)

__init__方法和其他一些地方,您可以参考self.__speed。但是,在acceleratebrake方法中,您引用self.speed,这不是一回事。使所有引用都相同,并解决您的问题。

答案 1 :(得分:1)

除了Rory的答案之外,在您的主要代码中,您实际上从未调用过acceleratebrake方法。您总是需要使用调用括号()来调用函数或方法,而不是仅仅引用它。

但是,如果这样做,您将遇到另一个问题,即这些方法已被定义为接受您需要传递的参数speed。但实际上这些方法不使用这些参数,因此您应该从定义中删除它们。所以:

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

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

...

for i in range(5):
    my_car.accelerate()

...

for i in range(5):
    my_car.brake()