我对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的代码?
答案 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)