我有这个问题: 我的超级班是:
class Regressionb(object):
def __init__(self, Datamatrix, targets):
self.X = Datamatrix
self.y = targets
def theta_X_product(self, theta, X):
return self.add_column_zero(X).dot(theta)
def add_column_zero(self, X):
m = len(X)
return np.concatenate((np.ones([m,1],1]), X), axis = 1)
,我的孩子班:
from Regressionb import *
class LinearRegressionb(Regressionb):
def __init__(self, Datamatrix, targets):
Regressionb.__init__(self, Datamatrix, targets)
#tryed also with super().__init__(Datamatrix, targets)
def hypothesis(self, theta):
return lambda X : Regressionb.theta_X_product(self, theta, X)
#also tryed return lambda X : super().theta_X_product(theta, X)
比我从控制台跑:
X = np.matrix([ [11, 12, 13, 14], [21, 22, 23, 24], [31, 32, 33, 34]])
theta = np.matrix([1, 1, 1, 1, 1]).T
from LinearRegressionb import *
linear = LinearRegressionb(X, y)
h = linear.hypothesis(theta)
我收到错误:
hypothesis() takes exactly 1 argument (2 given)
我没看到我如何给出2个参数。我的错误在哪里?
答案 0 :(得分:-3)
您的孩子班级应该如下:
class LinearRegressionb(Regressionb):
def __init__(self, Datamatrix, targets):
super(LinearRegressionb, self).__init__(Datamatrix, targets)
def hypothesis(self, theta):
return lambda X : super(LinearRegressionb, self).theta_X_product(theta, X)
- 编辑 -
同意,虽然超级可能不是最好的事情,因为hypothesis
没有被覆盖,但是不必要或者没有,这取决于程序员。这里的重点是恕我直言,如何从父类调用方法,以及使用super的正确语法,我演示了。不知道为什么我被投票支持。