逻辑门和电路 - 连接器类中的自我代表什么

时间:2016-08-17 18:32:46

标签: class python-3.x object

我正在学习来自

的面向对象编程

使用算法和数据结构解决问题。

我无法理解Connector Class中的setNextPin(self,source)方法。我明白tgate.setNextPin(self)意思是tgate.setNextPin(tgate,self)但是这里真的是什么?让我感到困惑的是连接器的自我代表什么? 从逻辑上讲,这个方法会设置tgate.PinA = self,因为我们希望tgate从fgate获取值,所以self == fgate?对不起,如果问题是愚蠢或混乱

class Connector:

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

        tgate.setNextPin(self)

    def getFrom(self):
        return self.fromgate

    def getTo(self):
        return self.togate

我想我理解自我的基本思想,但如果我们有:

g1 = AndGate("G1") 
g2 = AndGate("G2") 
g3 = OrGate("G3") 
c1 = Connector(g1,g3) 

所以在这种情况下g3setNexPin(self)会将g3的下一个引脚设置为c1 ??但是c1只是一个连接器而且没有任何值?

2 个答案:

答案 0 :(得分:1)

self指的是"当前"宾语。在__init__()中,这是正在创建和初始化的对象。因此tgate.setNextPin(self)tgate的下一个引脚设置为当前Connector。你猜不到它不是fgate。这是正在初始化的新Connector

有关详细信息,请参阅What is the purpose of self?

  

所以在这种情况下g3.setNexPin(self)会将g3的下一个引脚设置为c1 ??

这基本上是正确的。一个小的挑剔:实际代码是tgate.setNextPin(self)。在此特定情况下,tgate引用与g3相同的对象,self引用正在创建的对象。 __init__()返回后,将分配c1来引用此新创建的对象。

答案 1 :(得分:1)

我刚刚在阅读这本书时偶然发现了这个问题。我在尝试时找到了答案 执行本节末尾给出的整个活动代码。在 BinaryGate 类中,getPinA() 返回

'self.pinA.getFrom().getOutput()'

所以崩溃-

'self.pinA --> c1' 
'c1.getFrom() --> g1'
'g1.getOutput() --> gets the output of gate g1'

getPinA() 用于将输入发送到二进制门,因此提供连接器作为 tgate.setNextPin() 的源是有意义的

参考链接:https://runestone.academy/runestone/books/published/pythonds/Introduction/