首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python材料计算器中存储材料属性的最佳方法?

在Python材料计算器中存储材料属性的最佳方法?
EN

Stack Overflow用户
提问于 2020-04-23 13:23:16
回答 1查看 329关注 0票数 1

我要为工程师们编写一个计算器,它可以根据建筑材料来计算一些结构的性能。

我有一堆材料,每种材料都有相同的性能(强度、密度等)。

用户将输入一些特定于结构的属性(大小、位置等)。基于这一点和材料特性,计算器将输出结构的性能(例如。(各种压力、压力等)

储存材料性能的最佳方法是什么?现在,我想我将使用一个模块,其中包含一些类:

代码语言:javascript
复制
class Concrete_1:
      strength=1
      hardness=1.5
class Concrete_2:
      strength=3
      hardness=7

这样,在所有的计算中,我都可以用简单的方法来指每一种物质属性,例如:

代码语言:javascript
复制
StructureProperty=properties.Concrete_1.strength*UserInput

你觉得这是个好办法吗?我的目标不是代码的杰作,但我也想确保这不是一个愚蠢的想法。处理这种事情的明智方法是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 13:52:35

在没有太多上下文的情况下,我建议您采取这样的解决方案:

代码语言:javascript
复制
class Material:

    strength = None
    hardness = None

    @classmethod
    def calculate_strength_related_property(cls, user_input):
        return user_input * cls.strength

class Concrete1(Material):

    strength = 1
    hardness = 2

class Concrete2(Material):

    strength = 3
    hardness = 4

定义一个超类,使用用户输入(我刚刚做了一个非常简单的示例)进行所需的所有计算,并返回您的结构属性所需的信息。然后,您可以创建新的材料子类,并像以前一样定义它们的属性。通过将其定义为类方法,可以避免只保存常量的实例材料。

一个使用示例是:

代码语言:javascript
复制
structure_property = Concrete1.calculate_strength_related_property(user_input)

你提出的解决方案肯定会奏效,我个人认为这并不是错误的,但我相信这种方法会更有吸引力。

注意: Material类中的属性定义是不必要的,但是我认为如果每个子类都共享它们,那么在那里拥有它们是很好的。

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

https://stackoverflow.com/questions/61388330

复制
相关文章

相似问题

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