Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我得到了一个“答案”;“浮动对象不可调用”;调用类模块中的最后一个函数时出错_Python_Class_Oop_Runtime Error - Fatal编程技术网

Python 我得到了一个“答案”;“浮动对象不可调用”;调用类模块中的最后一个函数时出错

Python 我得到了一个“答案”;“浮动对象不可调用”;调用类模块中的最后一个函数时出错,python,class,oop,runtime-error,Python,Class,Oop,Runtime Error,这是我第一次尝试使用Python 3.6编写一个使用类和对象的函数程序。我试图做的是以数字列表的形式获取输入,并返回项目数、总和、平均值和方差。以下是我目前的代码: >>> class stats: aList2 = [] def __init__(self, aList): self.aList = aList def n(self): return len(self.aList) def total(self)

这是我第一次尝试使用Python 3.6编写一个使用类和对象的函数程序。我试图做的是以数字列表的形式获取输入,并返回项目数、总和、平均值和方差。以下是我目前的代码:

>>> class stats:
    aList2 = []
    def __init__(self, aList):
        self.aList = aList
    def n(self):
        return len(self.aList)
    def total(self):
        return sum(self.aList)
    def average(self):
        return sum(self.aList)/len(self.aList)
    def sqr_diff(self):
        for i in range(0, len(self.aList)):
           self.sqr_diff = (self.average() - 
           self.aList[i])**2
           stats.aList2.append(self.sqr_diff)
        return sum(self.aList2)
    def variance(self):
        return (self.sqr_diff()/(self.n() - 1))
在我得到方差函数之前,这非常有效:

>>> s = stats([5.0,7.0,10.0,12.0])
>>> s.n()
4
>>> s.total()
34.0
>>> s.average()
8.5
>>> s.sqr_diff()
29.0
>>> s.variance()
Traceback (most recent call last):
  File "<pyshell#250>", line 1, in <module>
    s.variance()
  File "<pyshell#244>", line 17, in variance
    return (self.sqr_diff()/(self.n() - 1))
TypeError: 'float' object is not callable
>>> 

这似乎根本没有改变错误消息。我不知道它可能是什么

这是因为您有一个名为
sqr\u diff
的变量和方法。在
variance
方法中,
sqr_diff()
被方法中定义的浮点变量覆盖

为了防止将来发生这种情况,您可以对类采用命名约定,例如:
CamelCase
mixedCase
方法和函数,并在分隔的变量名下面划线


更改其中一个方法或变量名称以解决此问题。

这是因为您有一个名为
sqr\u diff
的变量和方法。在
variance
方法中,
sqr_diff()
被方法中定义的浮点变量覆盖

为了防止将来发生这种情况,您可以对类采用命名约定,例如:
CamelCase
mixedCase
方法和函数,并在分隔的变量名下面划线


请更改其中一个方法或变量名称以解决此问题。

再次调用函数self.sqr_diff()时,返回值似乎无法读取。 也许GLP会阻止该值,对不起,我不知道原因。但是我改变了你的代码,它就可以工作了

def variance(self):
    if self.aList2 == []:
        return (self.sqr_diff()/(self.n() - 1))
    else:
        return (sum(self.aList2) / self.n() - 1)

似乎当您再次调用self.sqr_diff()函数时,返回值无法读取。 也许GLP会阻止该值,对不起,我不知道原因。但是我改变了你的代码,它就可以工作了

def variance(self):
    if self.aList2 == []:
        return (self.sqr_diff()/(self.n() - 1))
    else:
        return (sum(self.aList2) / self.n() - 1)

我知道变量名和方法名应该是不同的。谢谢,成功了!不知道我到底是怎么错过的。@Jabernet没问题!如果这回答了您的问题,请不要忘记接受此答案,或者如果还有其他问题,请让我知道!:)我知道变量名和方法名应该是不同的。谢谢,成功了!不知道我到底是怎么错过的。@Jabernet没问题!如果这回答了您的问题,请不要忘记接受此答案,或者如果还有其他问题,请让我知道!:)