2015-04-15 142 views
0

我从视频中复制这个程序,我认为AndGate类中的__init__函数是不必要的,因为AndGate类中没有新的实例要定义。有人可以证实我的推理吗?Python逻辑电路

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

    def getLabel(self): 
     return self.label 

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


class BinaryGate(LogicGate): 
    def __init__(self,n): 
     LogicGate.__init__(self,n) 
     self.pinA = None 
     self.pinB = None 
    def SetNextPin(self,source): 
     if self.pinA == None: 
      self.pinA = source #pin a became a instance of connector class, conntector.gate.pinA 
     else: 
      if self.pinB == None: 
       self.pinB = source 
      else: 
       raise RuntimeError("Error: NO EMPTY PINS") 

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

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


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

    def performGateLogic(self): 
     a = self.getA() 
     b = self.getB() 

     if a == 1: 
      if a == b: 
       return 1 
     else: 
      return 0 
+3

你如何尝试,看看它是否有效? – deets

回答

1

你是正确的,__init__AndGate类下是没有必要的。 (用python测试这个具体的例子和一个新的类来验证)。它与如何处理python中的继承有关:自动调用父类的__init__函数。