若欄位只被一個子類別使用,那就下移吧。

Push Down Field

# Before
class Vehicle:
    def __init__(self, name):
        self.name = name

class Car(Vehicle):
    def display_name(self):
        print(f"This car is named: {self.name}")

class Motorcycle(Vehicle):
    def display_name(self):
        print(f"This motorcycle is named: {self.name}")

# After
class Vehicle:
    pass

class Car(Vehicle):
    def __init__(self, name):
        self.name = name

    def display_name(self):
        print(f"This car is named: {self.name}")

class Motorcycle(Vehicle):
    def __init__(self, name):
        self.name = name

    def display_name(self):
        print(f"This motorcycle is named: {self.name}")