class LogicGate(object):
def __init__(self, n):
self.label = n
self.output = None # ????????????
def getOutput(self):
self.output = self.performGateLogic()
return self.output
def getLabel(self):
return self.label
class BinaryGate(LogicGate):
def __init__(self, n): # ?????????????????
LogicGate.__init__(self, n)
self.pinA = None # ??????????????
self.pinB = None # ??????????????
def getPinA(self):
return int(raw_input('Enter Pin A input for gate' + self.getLabel() + '-->'))
def getPinB(self):
return int(raw_input('Enter Pin A input for gate' + self.getLabel() + '-->'))
class UnaryGate(LogicGate):
def __init__(self, n): # ??????????????
LogicGate.__init__(self, n)
self.pin = None # ?????????????
def getPin(self):
return int(raw_input('Enter Pin input for gate' + self.getLabel() + '-->'))
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
Этот код принадлежит к решению проблем с алгоритмами и структурами дат. Когда я удаляю строки перед комментарием «# ????????», код может работать нормально. Почему автор пишет код следующим образом? Хороший ли стиль кода? Могу я всегда удалять эти строки перед комментарием '# ????????' ?Python 2.7, в чем преимущество такого рода инициализации в классе?
Он работает, как с, так и без этих линий. – hd1
Рассмотрите ситуацию, когда вы хотите проверить, есть ли у вас соответствующие условия для продолжения (прямо перед очень дорогостоящей операцией). 'if self.pinA is None:'. –
По-моему, это действительно плохо разработанный код. Это похоже на то, что Java-соглашения были принудительно установлены в Python. –