我要为工程师们编写一个计算器,它可以根据建筑材料来计算一些结构的性能。
我有一堆材料,每种材料都有相同的性能(强度、密度等)。
用户将输入一些特定于结构的属性(大小、位置等)。基于这一点和材料特性,计算器将输出结构的性能(例如。(各种压力、压力等)
储存材料性能的最佳方法是什么?现在,我想我将使用一个模块,其中包含一些类:
class Concrete_1:
strength=1
hardness=1.5
class Concrete_2:
strength=3
hardness=7这样,在所有的计算中,我都可以用简单的方法来指每一种物质属性,例如:
StructureProperty=properties.Concrete_1.strength*UserInput你觉得这是个好办法吗?我的目标不是代码的杰作,但我也想确保这不是一个愚蠢的想法。处理这种事情的明智方法是什么。
发布于 2020-04-23 13:52:35
在没有太多上下文的情况下,我建议您采取这样的解决方案:
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类中的属性定义是不必要的,但是我认为如果每个子类都共享它们,那么在那里拥有它们是很好的。
https://stackoverflow.com/questions/61388330
复制相似问题