https://pastein.ru/t/uJ

  скопируйте уникальную ссылку для отправки


class BaseSchema(object):
    def __init__(self):
        self.name = 'default'
        self.ins = []
        self.outs = []

        self.io_params = self.io_params or {}
        self.io_params['count'] = self.io_params.get('count') or [0, 0]  # required!
        self.io_params['digital'] = self.io_params.get('digital') or [True, True]

        self.ins = [0 for i in range(self.io_params['count'][0])]
        self.outs = [0 for i in range(self.io_params['count'][1])]

    def f(self, _in):
        pass


class Decryptor(BaseSchema):
    def __init__(self):
        self.name = 'Decryptor'
        self.outs = [0]
        self.io_params = {
            'count': [3, 8]
        }
        super().__init__()

    def f(self):
        self.outs[0] = not self.ins[0] and not self.ins[1] and not self.ins[2]
        self.outs[1] = not self.ins[0] and not self.ins[1] and self.ins[2]
        self.outs[2] = not self.ins[0] and self.ins[1] and not self.ins[2]
        self.outs[3] = not self.ins[0] and self.ins[1] and self.ins[2]
        self.outs[4] = self.ins[0] and not self.ins[1] and not self.ins[2]
        self.outs[5] = self.ins[0] and not self.ins[1] and self.ins[2]
        self.outs[6] = self.ins[0] and self.ins[1] and not self.ins[2]
        self.outs[7] = self.ins[0] and self.ins[1] and self.ins[2]


def main():
    d = [Decryptor(), Decryptor()]
    d[0].ins = [1, 1, 1]
    d[0].f()
    print(d[0].outs)
    d[1].ins = d[0].outs[:3]
    d[1].f()
    print(d[1].outs)


main()