我正准备为工程师们编程一个计算器,它允许根据一些结构的材料来计算它的属性。
我有一堆材料,每一种材料都有相同的属性(强度、密度等)。
用户将输入一些特定的结构属性(尺寸、位置等),根据这些属性和材料属性,计算器将输出结构的属性(如各种应力、压力等)。
存储材料属性的最佳方式是什么?现在我想我会使用一个模块,里面有很多类。
class Concrete_1:
strength=1
hardness=1.5
class Concrete_2:
strength=3
hardness=7
在所有的计算中,我可以使用简单的方式来引用每个材料属性,例如:
StructureProperty=properties.Concrete_1.strength*UserInput
你认为这是个好方法吗?我的目标不是要做代码的杰作,但我也想确保这不是一个愚蠢的想法。有什么聪明的方法来处理这种事情。
如果没有太多背景,我建议你去找一个这样的解决方案。
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类中是没有必要的,但我认为如果每个子类都共享它们,那么在那里有它们是很好的。