Я хочу подкласс 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])
1. 'для освещено в list' ?? 2. 'self = raw_list' бесполезен. Вы проверили свой код? –
С первого взгляда есть некоторые очевидные ошибки: (1) 'для подсвеченного списка:' не имеет смысла - 'list' - это тип, а не переменная. (2) 'self = raw_list' в конце' __init__' не имеет смысла. Это локальное задание, которое не имеет никакого эффекта. –
(1) извините, опечатка, исправлена (2) ya, я знаю, что это неправильно, мне интересно, какой правильный путь –