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

问题描述 投票:1回答:1

我正准备为工程师们编程一个计算器,它允许根据一些结构的材料来计算它的属性。

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

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

存储材料属性的最佳方式是什么?现在我想我会使用一个模块,里面有很多类。

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

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

StructureProperty=properties.Concrete_1.strength*UserInput

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

python python-3.x variables global-variables
1个回答
1
投票

如果没有太多背景,我建议你去找一个这样的解决方案。

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

定义一个超级类,根据用户的输入进行所有的计算(我只是做了一个非常简单的例子),并返回你需要的结构属性信息。然后,你可以创建你的新的Material子类,并像之前那样定义它们的属性。通过将其定义为一个类方法,你可以避免实例化只持有常量的材料。

一个使用实例是

structure_property = Concrete1.calculate_strength_related_property(user_input)

你提出的解决方案一定会奏效 我个人认为是不可行的 错的,但我相信这种方法是有点范儿的。

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

© www.soinside.com 2019 - 2024. All rights reserved.