Class 逻辑门和电路-self-in连接器类代表什么

Class 逻辑门和电路-self-in连接器类代表什么,class,python-3.x,object,Class,Python 3.x,Object,我正在学习面向对象编程 《用算法和数据结构解决问题》一书 我很难理解连接器类中的setNextPin(self,source)方法。我知道tgate.setNextPin(self)是指tgate.setNextPin(tgate,self),但这里真正的self是什么呢??我很困惑连接器的自我代表什么?? 从逻辑上讲,这个方法将设置tgate.PinA=self,因为我们希望tgate从fgate获取值,所以self==fgate?抱歉,如果问题很愚蠢或令人困惑 class Connector

我正在学习面向对象编程

《用算法和数据结构解决问题》一书

我很难理解连接器类中的setNextPin(self,source)方法。我知道tgate.setNextPin(self)是指tgate.setNextPin(tgate,self),但这里真正的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) 

因此,在这种情况下,即g3。setNexPin(自)将g3的下一个引脚设置为c1??但是c1只是一个连接器,不包含任何值???

self
表示“当前”对象。在
\uuuu init\uuuuu()
中,这是正在创建和初始化的对象。因此
tgate.setNextPin(self)
tgate
的下一个插脚设置为当前
连接器
。它并不像你猜的那样是
fgate
。正在初始化的是新的
连接器

有关详细信息,请参阅

因此,在这种情况下,即
g3。setNexPin(self)
将g3的下一个引脚设置为c1


这基本上是正确的。一个小细节:实际代码是
tgate.setNextPin(self)
。在这种特殊情况下,
tgate
指的是与
g3
相同的对象,
self
指的是正在创建的对象。在
\uuuu init\uuuu()
返回后,
c1
将被分配来引用这个新创建的对象。

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

'self.pinA.getFrom().getOutput()'
所以崩溃了-

'self.pinA --> c1' 
'c1.getFrom() --> g1'
'g1.getOutput() --> gets the output of gate g1'
getPinA()
用于将输入发送到二进制门,因此提供连接器作为
tgate.setNextPin()


参考链接:

可能重复的是,
g3。setNextPin(self)
g3
的“下一个”pin设置为
c1
。至于下一句话,请你详细解释一下“但是c1只是一个连接器,没有任何值???”是什么意思,因为我不熟悉这本书。啊,对不起,我的意思是g3的引脚必须是正确的值。g3是一个OrGate类,它接受两个值,例如False或False,并返回值False。我的意思是c1不包含任何值,所以我们如何将g3的引脚设置为c1@AnhHoang注意保持Python代码中变量
g3
c1
之间的差异,以及它们所引用对象的行为。从这里显示的内容来看,任何地方都不会存储布尔值。但是,您还没有发布gate类的任何代码。可能最容易想到的是连接器类,它代表连接电路板上栅极引脚的导线。我想我理解基本思想,但如果我们有:g1=AndGate(“g1”)g2=AndGate(“g2”)g3=OrGate(“g3”)c1=连接器(g1,g3),那么在这种情况下是g3.setNexPin(self)将g3的下一个引脚设置为c1??但是C1仅仅是一个连接器,不保存任何值????HANHAON,如果你有更多的细节,你应该考虑编辑你的问题……尤其是代码,因为你不能在评论中格式化好。我已经编辑了这个问题更清楚,请HelEVEL是链接到最后一个完整代码的章节的链接。