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

2024-05-14 14:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

用户将输入一些特定于结构的属性(尺寸、位置等),并根据这些属性和材料属性,计算器将输出结构的属性(例如各种应力、压力等)

存储材料属性的最佳方式是什么?现在,我想我将使用一个包含一系列类的模块:

class Concrete_1:
      strength=1
      hardness=1.5
class Concrete_2:
      strength=3
      hardness=7

这样,在所有计算中,我可以使用简单的方法来引用每个材料属性,例如:

StructureProperty=properties.Concrete_1.strength*UserInput

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


Tags: 方法用户属性性能结构strength计算器class
1条回答
网友
1楼 · 发布于 2024-05-14 14:16:07

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

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

定义一个超级类,该类使用用户输入进行所有需要的计算(我刚刚制作了一个非常简单的示例),并返回结构属性所需的信息。然后,可以像以前一样创建新的材质子类并定义其特性。通过将其定义为类方法,可以避免实例化仅包含常量的材质

一个使用示例是:

structure_property = Concrete1.calculate_strength_related_property(user_input)

你提出的解决方案肯定会奏效,我个人认为这不是错误的,但我相信这种方法有点花哨

注意:没有必要在Material类中定义属性,但我认为如果每个子类都共享它们,那么将它们放在那里就很好了

相关问题 更多 >

    热门问题