gpt4 book ai didi

python - Problems in Data Structures and Algorithms 中逻辑门代码中函数定义的解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:14:36 24 4
gpt4 key购买 nike

(我是 Python 和 OOP 的新手,所以如果我在任何时候使用了无意义的语言,请告诉我。)

本书Problems in Data Structures and Algorithms以分层方式实现二进制和一元逻辑门的代码。请参阅我的问题底部以获取完整的相关代码。

我的特定查询是:在连接器类的构造函数中,有一行

tgate.setNextPin(self)

回到定义 setNextPin 函数的一元门:

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

函数setNextPin中的“源”是函数setNextPin的输入。所以当我看到 tgate.setNextPin(self) 行时,它告诉我回到一元类 (tgate) 中找到函数 setNextPin,并且 setNextPin 函数的输入(“源”)是 self,它在本例是 Connector 类的一个实例。但是,我真的不明白这是怎么回事。我看不出连接器类如何成为 setNextPin 中变量“source”的输入。

完整代码:

class LogicGate:

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

def getName(self):
return self.name

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

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.getName()+"-->"))
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

最佳答案

Connector 类表示用于将逻辑门相互连接的电线。 setNextPin() 被赋予一个 Connector,并将其与 pin 属性相关联。当它想要获得提供其输入的逻辑门时,它调用 self.pin.getFrom(),它转到 Connector getFrom() 方法,然后返回 Connectorfromgate 属性,这将是电线另一端的门。

关于python - Problems in Data Structures and Algorithms 中逻辑门代码中函数定义的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com