如何定义类的层次结构以继承变量和方法?

时间:2015-08-31 16:00:45

标签: python python-3.x oop inheritance class-hierarchy

我试图找到一种有效的(代码长度,冗长,可读性)方式来实现材料属性数据库。有时将不同的属性分组。例如,所有材料都具有疲劳寿命,不同材料类型具有不同的抗疲劳性,不同的材料等级具有不同的刚度。

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

此时我有点失落。我试图用这些来做很多事情,引用继承的方法和变量,但我有点迷失方向。

希望避免将所有数据复制到每个类中,然后如果找到则必须更改多个位置的错误。我主要使用类因为它们的继承属性,但可能有更好的方法。 (如果不需要方法,我可以想一些)

谢谢!

编辑:试图提供一些更具体的例子。试图这样做而不复制大量的代码。如果我不应该使用课程,请告诉我......

0 个答案:

没有答案