类型错误:Mean() 缺少 1 个必需的位置参数:“数据”

Dir*_*eah 2 python python-3.x anaconda

我正在尝试使用类来编写一个基本的平均计算器。但是,我收到错误

TypeError: Mean() missing 1 required positional argument: 'data'
Run Code Online (Sandbox Code Playgroud)

我有两个文件:一个包含具有平均函数的类,然后一个调用它,那就是我收到错误的时候。我的代码是:

class Statistics:
    def __init__(self,mean_x,mean_y,var,covar):
        self.mean_x=mean_x
        self.mean_y=mean_y
        self.var=var
        self.covar=covar
    
    def Mean(self,data):
        return sum(data)/float(len(data))
Run Code Online (Sandbox Code Playgroud)

抛出错误的代码是:

from Statistics import Statistics 
X=(0,1,3,5)
mean_x=Statistics.Mean(X)
print(mean_x)
Run Code Online (Sandbox Code Playgroud)

Sam*_*ord 5

Mean是一个实例方法,因此您需要在实例上调用它(该实例将成为self方法调用的参数)。

statistics = Statistics(None, None, None, None)
mean_x = statistics.Mean((0, 1, 3, 5))
Run Code Online (Sandbox Code Playgroud)

由于未使用上的参数,Statistics.__init__我建议删除它们(或完全删除__init__):

class Statistics:
   
    def mean(self, data):
        return sum(data)/float(len(data))
Run Code Online (Sandbox Code Playgroud)
from Statistics import Statistics 
X = (0,1,3,5)
statistics = Statistics()
mean_x = statistics.mean(X)
print(mean_x)
Run Code Online (Sandbox Code Playgroud)

请注意,Python 附带了一个内置函数的statistics模块:mean

import statistics

X = (0,1,3,5)
mean_x = statistics.mean(X)
print(mean_x)
Run Code Online (Sandbox Code Playgroud)