对于python中的HAS-A关系类,函数中使用source(self,source)有什么解释吗?

对于python中的HAS-A关系类,函数中使用source(self,source)有什么解释吗?,python,inheritance,composition,Python,Inheritance,Composition,是否有人可以解释或参考文档,将源代码解释为HAS-A关系中使用的函数中的参数 我正在努力提高我在python中的OOP知识,从而从以下方面学习:。有一个类继承和组合使用的例子(1.13.2.继承:逻辑门和电路)。我无法将“source”的背景理解为以下代码的函数参数。我可以看到在调试模式下,类的整个实例都作为参数发送。是“源”保留字吗? 在下面的代码中-类连接器有一个类逻辑门和引用函数tgate.setNextPin(self),但在BinaryGate类中有def setNextPin(sel

是否有人可以解释或参考文档,将源代码解释为HAS-A关系中使用的函数中的参数

我正在努力提高我在python中的OOP知识,从而从以下方面学习:。有一个类继承和组合使用的例子(1.13.2.继承:逻辑门和电路)。我无法将“source”的背景理解为以下代码的函数参数。我可以看到在调试模式下,类的整个实例都作为参数发送。是“源”保留字吗? 在下面的代码中-
类连接器有一个类逻辑门和引用函数
tgate.setNextPin(self)
,但在
BinaryGate
类中有
def setNextPin(self,source)
,我的问题是源代码引用

class LogicGate:
    def __init__(self,n):
        self.name = n
        self.output = None

    def getLabel(self):
        return self.name

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


class BinaryGate(LogicGate):
    def __init__(self,n):
        super(BinaryGate, self).__init__(n)
        self.pinA = None
        self.pinB = None

    def getPinA(self):
        if self.pinA == None:
            return int(input("Enter Pin A input for gate "+self.getLabel()+"-->"))
        else:
            return self.pinA.getFrom().getOutput()

    def getPinB(self):
        if self.pinB == None:
            return int(input("Enter Pin B input for gate "+self.getLabel()+"-->"))
        else:
            return self.pinB.getFrom().getOutput()

    def setNextPin(self,source):
        if self.pinA == None:
            self.pinA = source
        else:
            if self.pinB == None:
                self.pinB = source
            else:
                print("Cannot Connect: NO EMPTY PINS on this gate")

class AndGate(BinaryGate):
    def __init__(self,n):
        BinaryGate.__init__(self,n)

    def performGateLogic(self):
        a = self.getPinA()
        b = self.getPinB()
        if a==1 and b==1:
            return 1
        else:
            return 0

class UnaryGate(LogicGate):
    def __init__(self,n):
        LogicGate.__init__(self,n)
        self.pin = None

    def getPin(self):
        if self.pin == None:
            return int(input("Enter Pin input for gate "+self.getLabel()+"-->"))
        else:
            return self.pin.getFrom().getOutput()

    def setNextPin(self,source):
        if self.pin == None:
            self.pin = source
        else:
            print("Cannot Connect: NO EMPTY PINS on this gate")

class NotGate(UnaryGate):
    def __init__(self,n):
        UnaryGate.__init__(self,n)

    def performGateLogic(self):
        if self.getPin():
            return 0
        else:
            return 1

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

def main():
   g1 = AndGate("G1")
   g2 = NotGate("G2")
   c1 = Connector(g1,g2)
   print(g2.getOutput())

main()
答案很简单:

Connector中的
setNextPin
。\uuuu init\uuuu
Connector
类作为参数引用。这就是我一直在寻找的来源