0

我的类文件遇到问题,我似乎无法找到解决方法。我希望有人能指出我正确的方向。

这是我的代码:

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 

本质上,我希望将速度属性设置为 0,并有 3 个方法(加速、减速和 get_speed)对速度属性加减 5,最终返回速度属性以便打印。

我猜我的格式有问题,但我似乎找不到可以修复课程的正确安排。

实际程序假设循环加速方法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()

我知道这段代码很弱,但这都是临时的,可以帮助我更清楚地解决我的问题。所以希望它不会太混乱,我可以得到答案。

4

2 回答 2

5

self._speed + 5计算当前速度加 5。但您实际上并没有将计算值存储在任何地方。您想使用self._speed = self._speed + 5,或更常用的形式,self._speed += 5

于 2012-06-01T00:00:15.500 回答
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
于 2012-06-01T00:17:58.027 回答