【发布时间】:2017-12-06 04:35:40
【问题描述】:
我正在尝试计算加权平均值。我们刚刚开始 OOP,我不确定我的问题是出在那个还是列表上。
这是我的代码:
class WeightedAverage:
""" Class to compute weighted averages. """
def __init__(self):
""" Creates empty lists. """
scoresList = []
weightsList = []
def addScore(self,score,weight):
scoreBool = checkScore(score)
weightBool = checkWeight(weight)
if scoreBool == True and weightBool == True:
scoresList.append(score)
weightsList.append(weight)
def checkScore(scr):
if scr in range(1,10):
scrBl = True
else:
scrBl = False
return scrBl
def checkWeight(wgt):
if wgt in [0.5,1,1.5,2]:
wgtBl = True
else:
wgtBl = False
return wgtBl
def getScores(self,scoresList):
return scoresList
def getWeights(self,weightsList):
return weightsList
def getWAvg(self,scoresList,weightsList):
wAvg = [scoresList*weightsList for scoresList,weightsList in zip(scoresList,weightsList)]
return wAvg
# For testing
def main():
scoresData = [1.5,3,9.2]
weightsData = [0.5,2,1]
wAvg = scoresData.getWAvg(scoresData,weightsData)
print(wAvg) # should display 15.95/3
main() 被定义为在我的类中测试代码的一种方法。
当我运行 main() 时,我得到以下 TraceBack:
Traceback (most recent call last):
File "H:\WeightAverages.py", line 58, in <module>
main()
File "H:\WeightAverages.py", line 54, in main
wAvg = scoresData.getWAvg(scoresData,weightsData)
AttributeError: 'list' object has no attribute 'getWAvg'
这是我班级的问题还是只是列表问题?这是我第一次编写 OO 代码,所以我不确定这是否正确!
【问题讨论】:
-
您是否错过了
WeightedAverage实例的创建? -
这对我来说在 Py2.7 和 Py3.6 下运行没有错误。你更新你的代码了吗?
-
不,但我确实尝试了@ManojJadhav 的建议,并且奏效了。
标签: python python-3.x list class object-oriented-analysis