Python 逻辑门类-执行流在这里是如何工作的?

Python 逻辑门类-执行流在这里是如何工作的?,python,class,python-3.x,Python,Class,Python 3.x,我有一个LogicGate类,它可以有一个或两个输入行(UnaryGate和BinaryGate子类)和一个Connector类,它包含两个LogicGate对象,并具有将一个门的输出返回给另一个门的方法,以便接收端的门可以对其执行操作。我很难理解的是,什么对象实际上正在执行这里的get\u from()方法: class LogicGate: def __init__(self,n): self.label = n self.output = None

我有一个
LogicGate
类,它可以有一个或两个输入行(
UnaryGate
BinaryGate
子类)和一个
Connector
类,它包含两个
LogicGate
对象,并具有将一个门的输出返回给另一个门的方法,以便接收端的门可以对其执行操作。我很难理解的是,什么对象实际上正在执行这里的
get\u from()
方法:

class LogicGate:

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

    def get_label(self):
        return self.label

    def get_output(self):
        self.output = self.perform_gate_logic()
        return self.output

class UnaryGate(LogicGate):

    def __init__(self,n):
        LogicGate.__init__(self,n)

        self.pin = None

    def get_pin(self):
        if self.pin == None:
            pin = int(input("Enter Pin input for gate " + self.get_label() + "-->"))
            while pin != 1 and pin != 0:
                pin = int(input("Try again with 1 or 0 -->"))
            return pin
        else:
            return self.pin.get_from().get_output()

    def set_next_pin(self,source):
        if self.pin == None:
            self.pin = source
        else:
            raise RuntimeError("ERROR: NO EMPTY PINS")

class Connector:

    def __init__(self,fgate,tgate):
        self.fromgate = fgate
        self.togate = tgate

        tgate.set_next_pin(self)

    def get_from(self):
        return self.fromgate

    def get_to(self):
        return self.togate

get\u pin()
方法中,
self.pin.get\u from().get\u output()
到底在做什么?如果执行
get\u pin()
UnaryGate
连接器的
togate
,则
get\u from()
返回相应的
fromgate
,该连接器反过来执行
get\u输出()
并根据从其连接的一个或两个门接收的输入返回
1
0
。我无法理解的是
self.pin.get\u from()
部分。在
pin
对象上调用
get_from()
,据我所知,该对象只是一个类属性,可以是
1
0
None
?这对我来说没有多大意义,因为我不知道它如何执行该方法。数据在闸门及其连接的闸门之间“传输”的准确程度如何?

当闸门未收到用户的任何输入时,插脚实际上是连接器,如本解释器会话所示:

>>> g1 = AndGate("g1")
>>> g2 = AndGate("g2")
>>> g3 = OrGate("g3")
>>> g4 = NotGate("g4")
>>> c1 = Connector(g1,g3)
>>> c2 = Connector(g2,g3)
>>> c3 = Connector(g3,g4)
>>> repr(g4)
'<__main__.NotGate object at 0x102958890>'
>>> g4.pin
<__main__.Connector object at 0x10297f450>
>>> g4.pin == c3
True
>>> g3.pin_a
<__main__.Connector object at 0x10297f590>
>>> g3.pin_a == c1
True
>>> g3.pin_b == c2
True
>>> g1.pin_a
>>> print(g1.pin_a)
None
>>> 
g1=AndGate(“g1”) >>>g2=与门(“g2”) >>>g3=组织(“g3”) >>>g4=NotGate(“g4”) >>>c1=接头(g1、g3) >>>c2=连接器(g2、g3) >>>c3=接头(g3、g4) >>>报告员(g4) '' >>>g4.pin >>>g4.pin==c3 符合事实的 >>>g3.插脚a >>>g3.引脚_a==c1 符合事实的 >>>g3.pin_b==c2 符合事实的 >>>g1.pin_a >>>打印(g1.插针a) 没有一个 >>>

现在我了解了他们如何执行该方法。

似乎
pin
可以是
None
,调用用户输入,或者是
连接器
类。您从何处获取代码?是的,如果它是
连接器
,考虑到它是唯一具有
get_from()
方法的类,那么它是有意义的,但是类实例是如何分配给
pin
变量的?代码来自于使用
set\u next\u pin
?哦,这就是原因
self
set\u next\u pin
中唯一的参数。在方法中放入一些描述性打印语句,然后看看会发生什么。