不确定python类的解决方案是否正确

时间:2016-09-19 23:53:46

标签: python class object

这是一个问题; 使用以下数据属性创建汽车类

__year_model
__make
__speed

该课程应该采用__init__方法接受汽车年份模型 并作为参数。该值应分配给对象__year_model__make attributes。它应该为__speed数据属性

分配0

它还应该有以下方法:

加速:加速应该每次加速5加速数据属性 被称为。

刹车:此方法应从速度减去5

get_speed:这应显示当前速度

接下来,设计一个创建Car对象的程序,然后调用acceleration方法 五次。每次调用加速方法后,获取当前车速和 显示它。然后调用制动方法五次。每次调用制动方法后,得到 当前的速度和显示它。

class Car:
    def __init__(self,year_model,make,speed):
        self.year_mode = year_model
        self.make = make
        self.speed = 0

    def accelerate(self,accelerate):
        self.accelerate = accelerate
        speed = 0
        for x in range(5):
            speed = speed + 5
            print speed

    def brake(self,brake):
        self.brake = brake
        speed = 0
        for x in range(5):
            brake = brake - 5
            print brake

    def get_speed(self):
        return self.speed


test = Car(2006,'Honda',100)

我知道test就是实例。它也是对象吗? 谢谢

1 个答案:

答案 0 :(得分:2)

是的,test是一个对象,即类的实例是一个对象。

你的课需要一些工作。根据规范,speed不应传递给__init__()。删除该内容并将self.__speed初始化为0中的__init__()

accelerate()brake()不应该接受参数 - 每个方法应该将当前速度提高5,或者将速度降低5.因此这些方法不需要任何参数(除了self)。

所以accelerate()应该是这样的:

def accelerate(self):
    self.__speed += 5    # shorthand for self.speed = self.speed + 5

每次调用时只会将速度提高5。请注意,使用self以使成员__speed递增,而不是某些临时局部变量。您可以对brake()执行相同操作。

除此之外,添加分配指定的测试:在每次调用后调用accelerate 5次打印速度。同样适用于brake方法。输出是否符合您的期望?

像这样测试:

car = Car(2006,'Honda')

for i in range(5):
    car.accelerate()
    print(car.get_speed())

for i in range(5):
    car.brake()
    print(car.get_speed())

哦,按照规范__speed命名您的会员,而不是speed等。