OOPS 组成和 IS-A 关系

2024-05-29 03:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着搜索这个主题,但是没有找到任何东西。 我创建了一个需要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

Tags: nameselfid主题关系init开发人员def
1条回答
网友
1楼 · 发布于 2024-05-29 03:55:57

一个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

相关问题 更多 >

    热门问题