逻辑门的继承层级结构实现-python

本文介绍了如何使用Python构建逻辑门的继承层次结构,包括LogicGate、BinaryGate、UnaryGate、AndGate、OrGate和NotGate等类,以及如何通过Connector类连接逻辑门以实现电路。每个逻辑门类具有performGateLogic()方法来执行布尔运算,同时添加setNextPin()函数以方便连接器设置输入。
摘要由CSDN通过智能技术生成

《Python数据结构与算法分析》(第二版)

在这里插入图片描述
为了实现电路,首先要构建逻辑门的表示。顶部的LogicGate类代表逻辑门的通用特性:逻辑门的标签(label)和一个输出(output)

根据逻辑门接收输入的个数来为逻辑门分类。BinaryGate是LogicGate的一个子类,并且有两个输入。UnaryGatet同样是LogicGate的子类,但只有一个输入。这些输入被称作**‘引脚’(pin)**。

AndGate和OrGate是BinaryGate的子类,NotGate是UnaryGate的子类。AndGate、OrGate和NotGate类需要实现各自的布尔运算行为,这里提供一个函数performGateLogic()。要使用这些逻辑门,可以构建这些类的实例,详见代码。

在这里插入图片描述
有了基本的逻辑门之后,便可以开始构建电路。为此,需要将逻辑门连接起来,前一个的输出是后一个的输入。因此,要实现一个Connector类。(Connector类与LogicGate类是HAS-A关系,即连接器内部包含LogicGate类的实例,但是不在继承层次结构中)

每一个连接器对象都包含fromgate和togate两个逻辑门实例,数据值会从一个逻辑门的输出‘流向’下一个逻辑门的输入。因此,需要一个函数setNextPin(),将该函数添加到逻辑门类中,以使每一个togate能够选择适当的输入。

# !/user/bin/env python
# coding:utf-8


class LogicGate:

    def __init__(self, n):
        self.label = n
        self.output = None

    def getLabel(self):
        return self.label

    def getOutput(self):
        self.output = self.performGateLogic()
        return self.output


class BinaryGate(LogicGate):

    def __init__(self, n):#子类的构造方法需要先调用父类的构造方法,然后再初始化自己独有的数据
        super().__init__(n)#使用super函数调用父类的构造方法

        self.pinA = None
        self.pinB = None

    def getPinA(self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值