Python类显示名称未定义

问题描述:

我正在为一个作业类编写一段代码,它应该允许我计算关于两个列表的各种距离统计信息。然而,当我分配名单类,并尝试打印的功能之一的结果,我得到的错误,Python类显示名称未定义

NameError: name 'ratings1' is not defined 

导致我相信我做了正确无论是在我的__init__功能或在函数中引用。你能帮助澄清我做错了什么吗?

class similarity: 

    def __init__(self, ratingX, ratingY): 
     self.ratings1=ratingX 
     self.ratings2=ratingY 

    def minkowski(self,r): 
     self.r=r 
     mink=0 
     length=len(ratings1) 
     for i in range(0,length): 
      mink=mink+(abs(ratings1[i]-ratings2[i]))**r 
     mink=mink**(1/r) 
     result='Given r=%d, Minkowski distance=%f'%(r,mink) 
     return result    

    def pearson(self): 
     Xavg=average(ratings1) 
     Yavg=average(ratings2) 
     n=len(ratings1) 
     diffX=[] 
     diffY=[] 
     for i in range(0,n): 
      diffX.append(ratings1[i]-Xavg) 
      diffY.append(ratings2[i]-Yavg) 
     return diffX 
     diffXY=[] 
     for i in range(0,n): 
      diffXY.append(diffX[i]*diffY[i]) 

example2=similarity([1,3,5,5,6],[4,6,10,12,13]) 

print(example2.pearson()) 

注意:如果我在函数中将“rating1/2”的引用更改为“ratingsX/Y”,则此错误仍然存​​在。

+1

可能重复[Python - 为什么这个类的变量没有在方法中定义?](http://*.com/questions/12790114/python-why-is-this-class-variable-not-defined-在方法)或[为什么实例变量不被识别](http://*.com/questions/26728585/why-is-instance-variable-not-getting-recognized) –

您需要在每次引用实例变量前使用self,即self.ratings1,并且您的缩进也是错误的。

+0

缩进是由于我复制/粘贴没有检查格式,但self.ratings1解决了我的问题,谢谢! –

评分与班级相关。使用self.ratings1等。

我刚才发现了我的错误。对于每个功能,我都没有在ratings名称前使用self.短语。要修改这个,我加了

ratings1=self. 
ratings2=self.ratings2 

到每个函数的开头。问题解决了。