难以理解Python OOP

时间:2019-03-15 12:22:27

标签: python oop

我对OOP相当了解,我只是在Python中玩它,遇到了一些我无法解释的内容,希望你们能够为您提供帮助。

我正在使用以下代码:

class Car():
    def __init__(self, brand, model, speed):
        self.brand = brand
        self.model = model
        self.speed = speed

    def increase_speed(self):
        return self.speed + 1


    def decrease_speed(self, decrease_by):
        return self.speed - decrease_by

car1 = Car("tesla","x",30)
print(car1.brand)
print(car1.speed)
print(car1.increase_speed())
print(car1.speed)
print(car1.decrease_speed(10))

我的问题是,我希望在提高速度后,car1的速度将为31,但会打印出30。为什么这样,应该如何编写速度为31的代码?

3 个答案:

答案 0 :(得分:3)

def increase_speed(self):
    self.speed += 1
    return self.speed

以前,您并未提高速度,而是只返回了等于速度加1的值。类似地,更改您的reduction_speed函数。

答案 1 :(得分:1)

gain_speed方法只是返回self.speed +1,如果您想更新速度,则需要将self.speed = self.speed +1返回到方法增加速度中。

答案 2 :(得分:1)

而不是返回值,而是在属性上进行设置:

class Car():
    def __init__(self, brand, model, speed):
        self.brand = brand
        self.model = model
        self.speed = speed

    def increase_speed(self):
        self.speed = self.speed + 1


    def decrease_speed(self, decrease_by):
        self.speed = self.speed - decrease_by

我故意不再返回更改的速度,因为它的好风格(至少使用主要设置属性的方法)可以 返回更改状态:< / p>

car1 = Car("tesla","x",30)
print(car1.brand)
print(car1.speed)
car1.increase_speed()
print(car1.speed)
car1.decrease_speed(10)
print(car1.speed)