我有以下基类:
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时,我希望两个构造函数都被调用,也就是说,我不想重写基类的构造函数。在运行派生类“one”时,python是否默认调用基类构造函数?我必须隐式地在派生类构造函数中进行吗?
您必须将其放入NeuralNetworkBackPropagation的
__init__()
方法中,即调用父类(NeuralNetworkBase)的__init__()
方法:父类的构造函数总是自动调用的,除非您在子类中覆盖它。如果您在子类中覆盖它,并且还想调用父类的类构造函数,那么您必须按照我上面所示的那样执行。
不,是的。
这与Python处理其他被重写方法的方式是一致的,如果希望在继承类中使用该功能,则必须显式调用基类中被重写的任何方法。
你的构造器应该是这样的:
或者,可以使用Python的^{} 函数来实现相同的功能,但是you need to be careful when using it。
相关问题 更多 >
编程相关推荐