子类列表:我做得对吗?

时间:2016-05-23 07:28:50

标签: python python-3.x subclass

我希望将list子类化为Clause,为其提供三个属性:

  1. Clause的每个元素都是Lit

  2. |&等某些运营商超载

  3. 如果ab的类型为Clause,那么a+b

  4. 这是我到目前为止所做的,但我很确定这是错的......最好的方法是什么?

    class Clause(list):
        def __init__(self, raw_list):
            for lit in raw_list:
                if not isinstance(lit, Lit):
                    raise TypeError, 'Clause contains non-Lit elements'
            self = raw_list
    
        def __invert__(self):
            return Formula([Clause([~lit]) for lit in self])
    
        def __or__(self, right):
            if not isinstance(right, Clause):
                raise TypeError, 'RHS is not of type Clause'
            return Formula([self + right])
    
        def __and__(self, right):
            if not isinstance(right, Clause):
                raise TypeError, 'RHS is not of type Clause'
            return Formula([self, right])
    

1 个答案:

答案 0 :(得分:0)

声明self = raw_list什么都不做。

您应该调用list构造函数:

list.__init__(self, raw_list)