Lesson 10
I am Your Father
Chapter 2: Inheritance
Battle cars!
Quick inheritance exercise! Suppose your overly eager software analyst from the previous lesson now decided to enhance your racing car game with special cars that can do battle with other cars. Here is a new BattleCar
class added to the mix.
Your task
BattleCar
is like any other Car
s, but has an additional method attack()
that allows it to attack another car. When the .attack(another_car)
method is invoked, the BattleCar
instance will forcefully decelerate another_car
by a rate corresponding to the BattleCar
’s strength
attribute. The target of the attack can be any Car
(does not have to be a BattleCar
).
Your task is to implement this BattleCar
class (the constructor and attack()
method) as described above. Obviously, BattleCar
should inherit from Car
, and you should not reimplement any of Car
’s methods unnecessarily (do not repeat yourself!)
This should be a quick exercise. You should be able to implement the attack()
method in one single line.
Sample usage
The following output assumes you are using the latest version of Car
with resistance from Wheels
from the last lesson.
>>> wheels = [Wheel(38, 0.5)] * 4 # 4 wheels with diameter 38 and resistance 0.5
>>> battle_car = BattleCar("The Terminator", 2020, True, wheels, strength=5)
>>> opponent_car = Car("Honda Civic", 2015, True, wheels)
>>> opponent_car.accelerate(50)
>>> print(opponent_car.speed)
49.0
>>> battle_car.accelerate(40)
>>> print(battle_car.speed)
39.0
>>> battle_car.attack(opponent_car)
>>> print(opponent_car.speed)
45.0