若兩子類別有名稱相似欄位,被用的方式也相似時,就可採用此手法。
這樣除了移除重複的資料宣告外,也將對應行為統一移至超類別中。

Pull Up Field
# Before
class Vehicle:
pass
class Car(Vehicle):
def __init__(self):
self.vehicle_type = "Car"
class Truck(Vehicle):
def __init__(self):
self.vehicle_type = "Truck"
# After
class Vehicle:
def __init__(self, vehicle_type):
self.vehicle_type = vehicle_type
class Car(Vehicle):
def __init__(self):
super().__init__("Car")
class Truck(Vehicle):
def __init__(self):
super().__init__("Truck")