我希望将list
子类化为Clause
,为其提供三个属性:
Clause
的每个元素都是Lit
|
和&
等某些运营商超载
如果a
和b
的类型为Clause
,那么a+b
这是我到目前为止所做的,但我很确定这是错的......最好的方法是什么?
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])
答案 0 :(得分:0)
声明self = raw_list什么都不做。
您应该调用list构造函数:
list.__init__(self, raw_list)