好的,所以我几乎已经解决了这个问题,但仍然需要一些帮助。我只需要程序在制动后速度小于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()
答案 0 :(得分:1)
在__init__
方法和其他一些地方,您可以参考self.__speed
。但是,在accelerate
和brake
方法中,您引用self.speed
,这不是一回事。使所有引用都相同,并解决您的问题。
答案 1 :(得分:1)
除了Rory的答案之外,在您的主要代码中,您实际上从未调用过accelerate
和brake
方法。您总是需要使用调用括号()
来调用函数或方法,而不是仅仅引用它。
但是,如果这样做,您将遇到另一个问题,即这些方法已被定义为接受您需要传递的参数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()