我有以下基类:
class NeuralNetworkBase:
def __init__(self, numberOfInputs, numberOfHiddenNeurons, numberOfOutputs):
self.inputLayer = numpy.zeros(shape = (numberOfInputs))
self.hiddenLayer = numpy.zeros(shape = (numberOfHiddenNeurons))
self.outputLayer = numpy.zeros(shape = (numberOfOutputs))
self.hiddenLayerWeights = numpy.zeros(shape = (numberOfInputs, numberOfHiddenNeurons))
self.outputLayerWeights = numpy.zeros(shape = (numberOfHiddenNeurons, numberOfOutputs))
现在,我有了一个包含以下代码的派生类:
class NeuralNetworkBackPropagation(NeuralNetworkBase):
def __init__(self, numberOfInputs, numberOfHiddenNeurons, numberOfOutputs):
self.outputLayerDeltas = numpy.zeros(shape = (numberOfOutputs))
self.hiddenLayerDeltas = numpy.zeros(shape = (numberOfHiddenNeurons))
但是当我实例化NeuralNetworkBackPropagation时,我希望两个构造器都是called.This,我不想重写基类的构造器。python在运行派生类‘one’时会默认调用基类构造函数吗?我是否必须在派生类构造函数中隐式地执行此操作?
发布于 2009-12-12 12:21:39
您必须将其放入NeuralNetworkBackPropagation的__init__()
方法中,即调用父类的__init__()
方法(NeuralNetworkBase):
NeuralNetworkBase.__init__(self, numberOfInputs, numberOfHiddenNeurons, numberOfOutputs)
父类的构造函数始终是自动调用的,除非在子类中覆盖它。如果您在子类中覆盖了它,并且还想调用父类的类构造函数,那么您就必须像我上面所展示的那样去做。
https://stackoverflow.com/questions/1892269
复制相似问题