首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于计算流的Python OOP设计模式

用于计算流的Python OOP设计模式
EN

Stack Overflow用户
提问于 2021-02-20 10:07:25
回答 1查看 45关注 0票数 1

我是一个相对较新的oop新手,我有一个关于编码某种类型计算的最佳方法的快速问题。我很好奇是否有一个既定的设计模式来解决这类问题。

考虑一个化学流程,其中您将具有温度、压力、流速等属性的材料(a,b)转换为最终产品c。要实现这一点,我需要单位操作D,E,F…每个属性都有自己的属性集(成本、大小等)。我只需要一个方向的信息流,因为闭环可能会增加复杂性(如果不是这样,我真的很感激对闭环如何工作的洞察)。

a、b --> D --> E --> F --> c

最终,我希望能够做一个系统成本分析,我将总结D,E,F的成本属性。

我目前的想法是定义一个"materials“对象,然后让D继承materials,E继承D…C继承F,最后一个“系统”对象继承C来分析系统变量。由于我希望能够将D,E,F替换为G,H,I,也需要有条件继承的代码,其中D必须能够接受输入a,b(基于定义的属性),并且E能够出于同样的原因继承D。我不确定的一件事是,对象c如何能够理解如何汇总所有继承对象的属性(可能基于对象/属性的一些一致的命名约定?)。

很抱歉这个有点冗长的问题--如果你知道AspenPlus,我想用Python语言复制一个更小规模的版本(即没有解算器)。感谢您通读这篇文章!

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 13:25:13

我认为在你的例子中,函数式编程实际上比OOP更适合,因为它归结为对“空白”材料的一组操作过程,从而产生新的材料,实际上是相同的,具有不同的属性。

如果我被限制在OOP上,我会创建不同的类:

用于表示温度/压力等的字符串或枚举( a、b和c)

  • ExternalProperties等)的转换函数。包含用于转换材料类型的ExternalProperties

  • Laboratory和各种属性/函数的

  • Material_Type,例如,它可以包含一个具有无限列表的ExternalProperties

  • Laboratory的transform函数,用于执行所有操作

在这里,对象c将是材质可以计算的MaterialType,而无需继承其他所有内容。很难提出一个准确的具体化,因为你的例子非常抽象,但我认为继承在这里带来的问题比解决方案更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66287297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档