我试图找到一种有效的(代码长度,冗长,可读性)方式来实现材料属性数据库。有时将不同的属性分组。例如,所有材料都具有疲劳寿命,不同材料类型具有不同的抗疲劳性,不同的材料等级具有不同的刚度。
class Material(object):
def convert_c_to_f(self, temperature):
blah = (temperature - 32) *5.0 / 9.0
return blah
def other_function(self, foobar):
return foobar
class CarbonSteel(Material):
def __init__(self):
super(CarbonSteel, self).__init__()
prop_one = 3.0
prop_two = 0.2
fatigue_constants = [ 2.254510, -4.642236e-01, -8.312745e-01,
8.634660e-02, 2.020834e-01, -6.940535e-03,
-2.079726e-02, 2.010235e-04, 7.137717e-04,
0.0, 0.0]
class SA105(CarbonSteel):
def __init__(self):
super(SA105, self).__init__()
units = "imperial"
nom_comp = "Carbon Steel"
form = "Forging"
P_no = "1"
group = "2"
min_tensile_ksi = 70
min_yield_ksi = 36
temp_list = [-20.0, 400.0, 500.0, 600.0, 650.0, 700.0, 750.0, 800.0, 850.0, 900.0, 950.0, 1000.0]
temp_list = np.array(temp_list)
然后以下失败:
temp_list_c = temp_f2c(temp_list)
temp_list_c = super().super().temp_f2c(temp_list)
当我将对象定义为
时self.material = SA105()
然后我无法进入并获得超级'属性:
self.material.super().fatigue_constants
此时我有点失落。我试图用这些来做很多事情,引用继承的方法和变量,但我有点迷失方向。
希望避免将所有数据复制到每个类中,然后如果找到则必须更改多个位置的错误。我主要使用类因为它们的继承属性,但可能有更好的方法。 (如果不需要方法,我可以想一些)
谢谢!
编辑:试图提供一些更具体的例子。试图这样做而不复制大量的代码。如果我不应该使用课程,请告诉我......