Python实现列表统计量计算类的代码问题求助
修正后的代码及问题说明
完整修正代码
list_1 = [0,1,2,3,4,5,6,7] class SummaryStats: def __init__(self, list_x): self.list_x = list_x # 提前初始化属性,避免重复计算 self.size = len(list_x) self.mean = sum(list_x) / len(list_x) self.min_val = min(list_x) self.max_val = max(list_x) def sample_size(self): """ 返回样本量 """ return len(self.list_x) def sample_mean(self): """ 返回算术均值 """ return sum(self.list_x) / len(self.list_x) def minimum(self): """ 返回列表最小值 """ return min(self.list_x) def maximum(self): """ 返回列表最大值 """ return max(self.list_x) # 正确实例化并调用方法 list_1_stats = SummaryStats(list_1) print(list_1_stats.sample_size(), list_1_stats.sample_mean(), list_1_stats.minimum(), list_1_stats.maximum()) list_2 = [8,9,10,11,12,13,14,15] list_2_stats = SummaryStats(list_2) # 直接访问提前初始化的属性 print(list_2_stats.size, list_2_stats.mean, list_2_stats.min_val, list_2_stats.max_val)
原代码问题解析
- 方法定义错误:所有实例方法未添加
self作为第一个参数,导致无法访问实例内部的list_x属性。修正后所有方法以self为首参数,通过self.list_x调用传入的列表。 - 实例化错误:
list_1 = SummaryStats()未传入__init__要求的列表参数,违反类的初始化规则,必须传入目标列表才能完成实例化。 - 方法调用错误:直接调用
sample_size(list_1)属于错误的调用逻辑,类的实例方法必须通过实例对象调用,比如list_1_stats.sample_size()。 - 属性访问错误:原代码尝试访问
list_2.size等未定义的属性,修正时要么在__init__中提前计算并赋值这些属性,要么调用对应的实例方法获取结果。
内容的提问来源于stack exchange,提问作者masondonehoo
相关产品推荐
相关产品推荐

