我尝试搜索该主题,但找不到任何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
答案 0 :(得分:1)
一个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