实现电路:

实现方法:

class LogicGate(object):
def __init__(self, n):
self.name = n
self.output = None def get_label(self):
return self.name def get_output(self):
self.output = self.perform_gate_logic()
return self.output class BinaryGate(LogicGate):
def __init__(self, n):
super().__init__(n)
self.pinA = None
self.pinB = None def get_pinA(self):
if self.pinA == None:
return int(input("输入PinA的值 " + self.get_label() + "-->"))
else:
return self.pinA.get_from().get_output() def get_pinB(self):
if self.pinB == None:
return int(input("输入PinB的值 " + self.get_label() + "-->"))
else:
return self.pinB.get_from().get_output() def set_next_pin(self, source):
if self.pinA == None:
self.pinA = source
else:
if self.pinB == None:
self.pinB = source
else:
print("无法连接:这个逻辑门没有空引脚") class AndGate(BinaryGate):
def __init__(self, n):
super().__init__(n) def perform_gate_logic(self):
a = self.get_pinA()
b = self.get_pinB()
return a & b class OrGate(BinaryGate):
def __init__(self, n):
super().__init__(n) def perform_gate_logic(self):
a = self.get_pinA()
b = self.get_pinB()
return a | b class UnaryGate(LogicGate):
def __init__(self, n):
super().__init__(n)
self.pin = None def get_pin(self):
if self.pin == None:
return int(input("输入Pin的值 " + self.get_label() + "-->"))
else:
return self.pin.get_from().get_output() def set_next_pin(self, source):
if self.pin == None:
self.pin = source
else:
print("无法连接:这个逻辑门没有空引脚") class NotGate(UnaryGate):
def __init__(self, n):
super().__init__(n) def perform_gate_logic(self):
a = self.get_pin()
return 0 if a else 1 class Connector(object):
def __init__(self, fgate, tgate):
self.from_gate = fgate
self.to_gate = tgate
tgate.set_next_pin(self) def get_from(self):
return self.from_gate def get_to(self):
return self.to_gate def main():
g1 = AndGate("U")
g2 = AndGate("U")
g3 = OrGate("U3")
g4 = NotGate("U")
c1 = Connector(g1, g2)
c2 = Connector(g2, g3)
c3 = Connector(g3, g4)
print(g4.get_output()) main()

python类模拟电路实现的更多相关文章

  1. Python requests模拟登录

    Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...

  2. 用python实现模拟登录人人网

    用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...

  3. 【Python&数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  4. 初级模拟电路:4-1 BJT交流分析概述

    回到目录 BJT晶体管的交流分析(也叫小信号分析)是模拟电路中的一个难点,也可以说是模电中的一个分水岭.如果你能够把BJT交流分析的原理全都搞懂,那之后的学习就是一马平川了.后面的大部分内容,诸如:场 ...

  5. 细说python类3——类的创建过程

    细说python类3——类的创建过程 https://blog.csdn.net/u010576100/article/details/50595143 2016年01月27日 18:37:24 u0 ...

  6. python类的静态方法和类方法区别

    先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. # coding:utf-8 class Foo(object): """类三种方法语法形式&q ...

  7. python 类(object)的内置函数

    python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...

  8. python类、对象

    python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...

  9. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

随机推荐

  1. springboot整合spring Data JPA

    今天敲代码,一连串的错误,我也是服气~果然,我们不是在出bug,就是在找bug的路上…… 今天完成的是springboot整合spring data JPA ,出了一连串的错,真是头大 java.sq ...

  2. 爬虫---PyQuert简介

    今天写一篇最近刚学习的一个第3方库pyquery,pyquery比bs4,lxml更强大的一个网页解析工具. 什么是pyQuery Pyquery是python的第3方库,PyQuery库也是一个非常 ...

  3. 1、zabbix监控基础概念

    目录 为什么要使用监控? 监控怎么用? 去到一家新公司,应该如何搭建监控系统? 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛 ...

  4. 【西北师大-2108Java】第四次作业成绩汇总

    [西北师大-2108Java]第四次作业成绩汇总 深入理解程序设计中算法与程序的关系: 深入理解java程序设计中类与对象的关系: 理解OO程序设计的第2个特征:继承.多态: 学会采用继承定义类设计程 ...

  5. JMeter面试题

    1.Jmeter怎么录制脚本,怎么过滤,线程组有哪些内容? jmeter可以使用第三方的录制工具(badboy)或者使用jmeter自带的HTTP代理服务器录制脚本功能 jmeter录制原理:通过ht ...

  6. 通过channel实现同步和数据交互

    package main import ( "fmt" "time" ) func main(){ //创建channel ch := make(chan st ...

  7. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...

  8. 在ASP.Net Core 中使用枚举类而不是枚举

    前言:我相信大家在编写代码时经常会遇到各种状态值,而且为了避免硬编码和代码中出现魔法数,通常我们都会定义一个枚举,来表示各种状态值,直到我看到Java中这样使用枚举,我再想C# 中可不可以这样写,今天 ...

  9. Jenkins安装第一个插件和通过离线安装包进行安装

    1.打开左侧Manage Jenkins 选择Manage Plugins菜单 2.搜索Folders插件,该插件用于创建一个目录 3.点击安装进入插件安装状态,Jenkins会自动下载相关联的插件 ...

  10. mysqldump导表

    mysqldump全量导表 mysqldump -hlocalhost -uroot -P3306 -p --skip-add-locks --skip-triggers test > test ...