A Traveller
имеет Plan
.Plan
, созданный Агентством или пользовательский план, оба являются просто Plan
объектом, который вы создаете, а затем присваиваете Traveller
при создании или позже.Вам не нужен CustomPlan
, потому что, вероятно, только значения атрибута Plan
отличаются от Plan
до Plan
.Вы просто создаете новые разные планы:
Итак
agency_plan = Plan(some_data)
custom_plan = Plan(some_other_data)
Если у вас действительно разные планы (по атрибутам или поведению элементов данных), вы можете иметь
class CustomPlan1(Plan):
...
спреимущество в том, что он все еще является Планом и может использоваться как таковой.
class Plan():
def __init__(self, plan_data):
self.setupPlan(plan_data)
def setupPlan(self, data):
...
# configure the plan attributes based on data
...
class Traveller():
def __init__(self, name, plan=None):
self.name = name
if plan:
self.plan = plan
traveller1 = Traveller('John', agency_plan)
traveller2 = Traveller('Mary', custom_plan)
traveller3 = Traveller('Alice')
...
custom_plan2 = Plan(some_other_data2)
traveller3.plan = custom_plan2