Python:建造者模式

# -*- coding:utf-8 -*-
import json


class Optimizing:
    """ 优化实体类 """
    def __init__(self):
        self._optimizing = {}

    @property
    def optimizing(self):
        return self._optimizing["optimizing_id"]

    @optimizing.setter
    def optimizing(self, optimizing_id):
        self._optimizing["optimizing_id"] = optimizing_id

    def __str__(self):
        return f"<class 'Optimizing'; {self._optimizing}"


class RiskAnalysis:
    """ 风险分析实体类 """
    def __init__(self):
        self._risk_analysis = {}
        self._relation_optimizing = []
        self._index = -1

    def build_relation_optimizing(self, optimizing: Optimizing):
        self._relation_optimizing.append(optimizing)

    @property
    def risk_analysis(self):
        return self._risk_analysis["risk_analysis_id"]

    @risk_analysis.setter
    def risk_analysis(self, risk_analysis_id):
        self._risk_analysis["risk_analysis_id"] = risk_analysis_id

    def __iter__(self):
        return self

    def __next__(self):
        if self._index <= len(self._relation_optimizing) - 2 and len(self._relation_optimizing) > 0:
            self._index += 1
            return self._relation_optimizing[self._index]
        else:
            self._index = -1
            raise StopIteration

    def __str__(self):
        return f"<class> 'RiskAnalysis'; {self._risk_analysis}"


class FailureCause:
    """ 失效起因实体类 """
    def __init__(self):
        self._failure_cause = {}
        self._relation_process = {}
        self._relation_failure_mode = {}

        # 失效起因关联风险分析
        self._cause_relation_risk_analysis = {}

    @property
    def cause_relation_risk_analysis(self):
        return self._cause_relation_risk_analysis["risk_analysis_id"]

    @cause_relation_risk_analysis.setter
    def cause_relation_risk_analysis(self, risk: RiskAnalysis):
        self._cause_relation_risk_analysis["risk_analysis_id"] = risk

    @property
    def failure_cause(self):
        return self._failure_cause["failure_cause_id"]

    @failure_cause.setter
    def failure_cause(self, failure_cause_id):
        self._failure_cause["failure_cause_id"] = failure_cause_id

    @property
    def relation_process(self):
        return self._relation_process[self.failure_cause]

    @relation_process.setter
    def relation_process(self, process_id):
        self._relation_process[self.failure_cause] = process_id

    @property
    def relation_failure_mode(self):
        return self._relation_failure_mode[self._failure_cause]

    @relation_failure_mode.setter
    def relation_failure_mode(self, failure_mode_id):
        self._relation_failure_mode[self.failure_cause] = failure_mode_id

    def __str__(self):
        return f"<class> 'FailureCause'; {self._failure_cause}"


class FailureEffect:
    """ 失效影响实体类 """
    def __init__(self):
        # 失效影响id
        self._failure_effect = {}

        # 失效影响关联失效起因list
        self.effect_relation_cause = []

        # # 失效影响 关联 风险分析
        # self.effect_relation_analysis = []

    def build_relation_cause(self, cause: FailureCause):
        self.effect_relation_cause.append(cause)

    @property
    def failure_effect(self):
        return self._failure_effect["failure_effect_id"]

    @failure_effect.setter
    def failure_effect(self, failure_effect_id):
        self._failure_effect["failure_effect_id"] = failure_effect_id

    def __str__(self):
        return f"<class> 'FailureEffect'; {self._failure_effect}"


class FailureMode:
    """ 失效模式实体类 """
    def __init__(self):
        self._failure_mode = {}
        self.failure_effect = []
        self.mode_relation_cause = []

    @property
    def failure_mode(self):
        return self._failure_mode["failure_mode_id"]

    @failure_mode.setter
    def failure_mode(self, failure_mode_id):
        self._failure_mode["failure_mode_id"] = failure_mode_id

    def build_failure_effect(self, failure_effect: FailureEffect):
        self.failure_effect.append(failure_effect)

    def build_failure_cause(self, process_id, failure_cause_id):
        self.mode_relation_cause.append({
            "process_id": process_id,
            "failure_cause_id": failure_cause_id,
        })

    def __str__(self):
        return f"<class> 'FailureMode'; {self._failure_mode}"


# class Relation:
#     # 废弃
#     def __init__(self):
#         self.processStepId = None
#         self.processElementId = None
#         self.productFeatureId = None
#         self.isRefProcessFeature = None


class Process:
    """ 过程特性实体类 """
    def __init__(self):
        self._process_obj = {}

    @property
    def process_obj(self):
        return self._process_obj["process_id"]

    @process_obj.setter
    def process_obj(self, process_id):
        self._process_obj["process_id"] = process_id

    def __str__(self):
        return f"<class> 'Process'; {self._process_obj}"


class Element:
    """ 工作要素实体类 """
    def __init__(self):
        self._element_obj = {}
        self.process_list = []
        self.is_link_process = False
        self.index = -1

    @property
    def element_obj(self):
        return self._element_obj["element_obj"]

    @element_obj.setter
    def element_obj(self, element_id):
        self._element_obj["element_obj"] = element_id

    def build_is_link_process(self, is_link: bool):
        self.is_link_process = is_link

    def build_process_list(self, process: Process = None):
        self.process_list.append(process)

    def __str__(self):
        return f"<class> 'Element'; {self._element_obj}"

    def __iter__(self):
        return self

    def __next__(self):
        if self.index <= len(self.process_list) - 2 and len(self.process_list) > 0:
            self.index += 1
            return self.process_list[self.index]
        else:
            self.index = -1
            raise StopIteration


class Product:
    """ 产品特性实体类 """
    def __init__(self):
        self._product_obj = {}
        self.element_list = []
        self.failure_mode_list = []

    @property
    def product_obj(self):
        return self._product_obj["product_id"]

    @product_obj.setter
    def product_obj(self, product_id):
        self._product_obj["product_id"] = product_id

    def build_element_list(self, element: Element):
        self.element_list.append(element)

    def build_failure_mode_list(self, failure_mode: FailureMode):
        self.failure_mode_list.append(failure_mode)

    def __str__(self):
        return f"<class> 'Product'; {self._product_obj}"


class Step:
    """ 过程步骤实体类 """
    def __new__(cls, *args, **kwargs):
        flag = super().__new__(cls)
        return flag

    def __init__(self):
        self.step_obj = {}
        self.product_list = []
        self.index = -1

    # 产品特性id对象列表
    def build_step(self, step_id):
        self.step_obj["step_id"] = step_id

    def build_product_list(self, product: Product):
        self.product_list.append(product)

    def __str__(self):
        return f"<class> 'Step'; {self.step_obj}"

    def __iter__(self):
        return self

    def __next__(self):
        if self.index <= len(self.product_list) - 2 and len(self.product_list) > 0:
            self.index += 1
            return self.product_list[self.index]
        else:
            self.index = -1
            raise StopIteration


class Analysis:
    """ PFMEA分析实体类 """
    def __init__(self):
        # 步骤id对象列表
        self.step_list = []
        self.index = -1
        # self.iter = True

    # def __repr__(self):
    #     return f""

    def __str__(self):
        return f"<class> 'Analysis'"

    def build_step_list(self, step: Step):
        self.step_list.append(step)

    def __iter__(self):
        # self.iter = iter(self.step_list)
        return self

    def __next__(self):
        if self.index <= len(self.step_list) - 2 and len(self.step_list) > 0:
            self.index += 1
            # yield self.step_list[self.index]
            # next(self.step_list[self.index])
            return self.step_list[self.index]
        else:
            # del self.iter
            self.index = -1
            raise StopIteration

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值