OOPS组成与IS-A关系

时间:2019-02-23 03:37:39

标签: python oop

我尝试搜索该主题,但找不到任何this。 我创建了一个需要OwnsA和ISA关系的类。我不是oops的专家或成熟开发人员,所以需要知道以下代码是否属于oops的实践。 基本上,旅行者可以使用代理商提供的默认计划,也可以创建自己的计划

class Plan():

        def __init__(self,m):
            self.m = m


class Traveller():

    def __init__(self, _name):
        self.name = _name

    class Create_Own_Plan(Plan):

        def __init__(self, _id):
            self.id = _id

1 个答案:

答案 0 :(得分:1)

一个Traveller有一个Plan。由代理商或自定义计划创建的Plan都是您创建的Plan对象,然后在创建之时或之后将其分配给Traveller。您不需要CustomPlan,因为可能只有Plan属性值与PlanPlan不同。您只需创建新的不同计划:

所以

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