Python 通过继承访问时,类方法不返回值
我有一个类方法,当我尝试通过继承的子类进行访问时,它会停止返回值 不知道是什么导致它无法返回适当的值 以下是我所拥有的:Python 通过继承访问时,类方法不返回值,python,python-3.x,oop,inheritance,Python,Python 3.x,Oop,Inheritance,我有一个类方法,当我尝试通过继承的子类进行访问时,它会停止返回值 不知道是什么导致它无法返回适当的值 以下是我所拥有的: class KNN(): 定义初始化(self,邻居=5,居中=True): self.neights=邻居 以自我为中心 def_get_距离(self,xi): 返回np.sqrt((xi-self.X_fit)**2.sum(1)) def配合(自、X、y): 如果以自我为中心: self.X_拟合=标准化(X) 其他: self.X_fit=X self.y_fit=
class KNN():
定义初始化(self,邻居=5,居中=True):
self.neights=邻居
以自我为中心
def_get_距离(self,xi):
返回np.sqrt((xi-self.X_fit)**2.sum(1))
def配合(自、X、y):
如果以自我为中心:
self.X_拟合=标准化(X)
其他:
self.X_fit=X
self.y_fit=y
def预测(自、X、居中=假):
m、 n=X.shape[0],自X_拟合形状[0]
self.dist_矩阵=np.zeros((m,n))
X_pred=np.zero(X.shape)
如果标准化:
X_pred=标准化(X)
其他:
X_pred=X
对于范围(m)内的行:
self.dist\u矩阵[行]=self.\u获取距离(X\u pred[行])
self.idx_vals=np.argsort(self.dist_矩阵)[:,:self.neights]
self.y_idx=self.y_fit[self.idx_vals]
self.preds=[self.neighbor_计算(self.y_idx[i]),用于范围(len(self.y_idx))]
返回self.preds
如果我直接访问KNN
类,predict
方法按预期工作,并返回一个预测值数组
但是,当我尝试创建从KNN
继承的子类时,它停止了:
class KNNClassifier(KNN):
def predict(self, X, centered=False):
self.neighbor_calculation = majority_vote
super().predict(X, standardize)
当我通过KNN分类器
类访问predict
方法时,它不会返回值
但是,self.preds
包含实际预测
但是尝试类似于knnclasifier.predict(X)[:10]
的方法会给出错误消息:
'NoneType' object is not subscriptable'
我不知道为什么返回的值突然被解释为
None
您正在使用super
从子方法调用父方法,这是正确的,但是您需要使用return
返回值:
return super().predict(X, standardize)