OOPS состав и отношения IS-A - PullRequest
       2

OOPS состав и отношения IS-A

0 голосов
/ 23 февраля 2019

Я попытался выполнить поиск по этой теме, но не смог ничего найти 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 голосов
/ 24 февраля 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...