Python类继承构造函数失败:我做错了什么?

时间:2012-03-26 11:58:59

标签: python oop inheritance


我有一个小的Python OOP程序,其中2个类,Flan和Outil继承自超类Part。
我的问题是,当我致电Flan时,一切都运行正常,但是当我致电Outil时,程序会无声地失败。
Outil实例已创建,但缺少与Part不共享的所有属性 Outil实例未添加到Outil.list_instance_outils,也未添加到Part.list_instances

class Outil(Part):

    list_instance_outils = []    

    def __init___(self, name, part_type, nodes, elems):
        Part.__init__(self, name, part_type, nodes, elems)
        self.vect_norm = vectnorm(self.nodes[self.elems[0,1:]-1, 1:])
        self.elset = Elset(self)
        self.nset = Nset(self, refpoint=True, generate=False)
        self.SPOS = Ab_surface(self, self.elset)
        self.SNEG = Ab_surface(self, self.elset, type_surf='SNEG')
        Outil.list_instance_outils.append(self)
        Part.list_instances.append(self)

class Flan(Part):

    list_instances_flans = []    

    def __init__(self, name, part_type, nodes, elems):
        Part.__init__(self, name, part_type, nodes, elems)       
        self.vect_norm = vectnorm(self.nodes[self.elems[0,1:4]-1, 1:])
        self.elset = Elset(self)
        self.nset = Nset(self)
        self.SPOS = Ab_surface(self, self.elset)
        self.SNEG = Ab_surface(self, self.elset, type_surf='SNEG')
        Flan.list_instances_flans.append(self)        
        Part.list_instances.append(self)

这两个类都继承自Part:

class Part():

    list_instances = []

    def __init__(self, name, part_type, nodes, elems):
        self.name = name
        self.name_instance = self.name + '-1'
        self.part_type = part_type
        self.elems = elems
        self.nodes = nodes
        offset = np.min(self.elems[:, 1:])-1
        self.nodes[:, 0] -= offset
        self.elems[:, 1:] -= offset

我无法强调我没有任何错误信息。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:7)

您使用 三个 尾随下划线而不是__init__中的两个写了Outil

因此,它不会被调用 - 而Part.__init__会被调用。这就是创建类的原因,但它缺少Part以外的属性。

答案 1 :(得分:1)

要解决此类问题,最好的办法是通过调试器运行代码。

让你的课程进入python解释器(导入,粘贴,你喜欢什么),然后call pdbimport pdb; pdb.run('Outil()')。您现在可以单步执行代码以查看发生的情况。