我遇到了类文件的问题,我似乎无法找到解决方法。我希望有人能指出我正确的方向。
这是我的代码:
class Car:
def __init__(self, year_model, make, speed):
self.__year_model = year_model
self.__make = make
self.__speed = 0
def set_year_model(self, year_model):
self.__year_model = year_model
def set_make(self, make):
self.__make = make
def get_year_model(self):
return self.__year_model
def get_make(self):
return self.__make
def accelerate(self):
self.__speed + 5
return self.__speed
def decelerate(self):
self.__speed - 5
return self.__speed
def get_speed(self):
return self.__speed
基本上,我希望将speed属性设置为0,并且有3个方法(加速,减速和get_speed),它们对speed属性进行加减5并最终返回speed属性,以便打印出来。
我猜我的格式有问题,但我似乎无法找到能够修复课程的正确安排。
真正的程序假设循环加速方法5次,但是类方法应该处理顺序加法并返回最终速度。
import car
user_year = 1995
user_make = "toyota"
user_speed = 0
user_car = car.Car(user_year, user_make, user_speed)
for count in range(1,6):
user_car.accelerate()
print user_car.get_speed()
我知道这段代码非常弱,但是这一切都是临时的,可以帮助我解决问题。 所以希望它不会太混乱,我可以得到答案。
答案 0 :(得分:5)
self._speed + 5
计算当前速度加上5.但实际上并没有将计算值存储在任何地方。您想使用self._speed = self._speed + 5
或更常用的表单self._speed += 5
。
答案 1 :(得分:0)
问题当然是缺少“+ =”和“ - =”部分,但我会更进一步,并建议如果你正在编写新的python代码,那么你就会熟悉新的风格课。在新的样式类中,您的代码可以按如下方式编写:
class Car(object):
def __init__(self, year_model, make, speed):
self.year_model = year_model
self.make = make
self.speed = 0
def __set_year_model(self, year_model):
self.__year_model = year_model
def __set_make(self, make):
self.__make = make
def __set_speed(self, speed):
self.__speed = speed
def __get_year_model(self):
return self.__year_model
def __get_make(self):
return self.__make
def accelerate(self):
self.speed += 5
def decelerate(self):
self.speed -= 5
def __get_speed(self):
return self.__speed
speed = property(fget=__get_speed,fset=__set_speed,fdoc="Set or Retrieve the current speed of this instance of the Car object")
make = property(fget=__get_make,fset=__set_make,fdoc="Set or Retrieve the make of this instance of the Car object")
year_model = property(fget=__get_year_model,fset=__set_year_model,fdoc="Set or Retrieve the Year and Model of this instance of the Car object")
此外,代码在主文件中更改:
import car
user_year = 1995
user_make = "toyota"
user_speed = 0
user_car = car.Car(user_year, user_make, user_speed)
for count in range(1,6):
user_car.accelerate()
print user_car.speed