Python, описать абстрактный класс

Есть вот такое задание, которое нужно реализовать на языке Python. Данное задания есть на других ЯП, но конвертировать у меня не получается.

Задание: Описать абстрактный класс Element (элемент логической схемы) задав в нем символьный идентификатор, количество входов, идентификаторы присоединенных к нему элементов (до 10) и двоичные значения на входах и выходе. На его основе реализовать классы AND_NOT и OR_NOT — двоичные вентили, которые могут иметь различное количество входов и один выход и реализуют логическое умножение c отрицанием и сложение c отрицанием соответственно. Создать класс Sсheme (схема), содержащий массив/параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможности вывода характеристик объектов списка и вычисление значений, формируемых на выходах схемы по заданным значениям входов. Написать демонстрационную программу, в которой будут использоваться все методы классов.

Тут вроде как получилось реализовать 1 класс:

class Element:
def __init__(self):
    self.num_ins = 2
    self.__A = False
    self.__B = False
    self._res = False

    if not hasattr(self, "calc"):
        raise NotImplementedError("Невозможно создать такой объект!")

def __setIn1(self, newA):
    self.__A = newA
    self.calc()

def __setIn2(self, newB):
    self.__B = newB
    self.calc()

def get_a(self):
    return self.__A

def get_b(self):
    return self.__B

def get_res(self):
    return self._res

In1 = property(lambda x: x.__A, __setIn1)
In2 = property(lambda x: x.__B, __setIn2)
Res = property(lambda x: x._res)


class TNot(Element):
    def __init__(self):
        Element.__init__(self)

    def calc(self):
        self._res = not self.In1


class TLog2In(Element):
    pass


class TAnd(TLog2In):
    def __init__(self):
        TLog2In.__init__(self)

    def calc(self):
        self._res = self.In1 and self.In2


class TOr(TLog2In):
    def __init__(self):
        TLog2In.__init__(self)

    def calc(self):
        self._res = self.In1 or self.In2


elNot = TNot()
elAnd = TAnd()
elTOr = TOr()

print("A | B | not(A↓B)")
print("---------------")
for A in range(2):
    elTOr.In1 = bool(A)
    for B in range(2):
        elTOr.In2 = bool(B)
        elNot.In1 = elTOr.Res
        print(" ", A, "|", B, "|", int(elNot.Res))

print()

print("A | B | not(A&B)")
print("---------------")
for A in range(2):
   elAnd.In1 = bool(A)
   for B in range(2):
       elAnd.In2 = bool(B)
       elNot.In1 = elAnd.Res
       print(" ", A, "|", B, "|", int(elNot.Res))

А как реализовать второй класс, не понимаю.


Ответы (0 шт):