我想用python生成类分数,它获取每个主题的分数并返回其平均值和总和。我知道如果我接收到4个参数,那么平均分母应该是4,但是我如何才能使它成为由输入数改变的固定代码呢?而不仅仅是计数和键入4。我尝试使用len(self)或for循环来计数,但是len会出错,for循环并不是那么容易。
class score:
def __init__(self, language, math, english, science):
self.language = language
self.math = math
self.english = english
self.science = science
...
def sum_scores(self):
result = self.language + self.math + self.english + self.science
return result
def average(self):
average = self.sum_scores()/4 # Here is the problem!
return average
这是我的第一个问题。很抱歉,我的英语很差,还有一些愚蠢的问题。
4条答案
按热度按时间rur96b6h1#
可以在init函数中使用关键字参数:
通过使用**分数,您可以动态地迭代作为字典传递到函数中的所有参数。这里,我用
setattr
函数为score对象提供其类名的属性,其值是字典中相应的值。这样,我就可以动态地迭代每个类,不管提供3个或100个类作为输入。bpsygsoo2#
首先不要使用4个单独的属性。使用
dict
存储属性;然后可以查询dict
.如果仍然需要每个分数的属性,请使用属性:
whitzsjs3#
假设您不知道分数适用的主题是可以的,那么您可以只使用未命名的位置参数
vh0rcniy4#
对于你的情况,你可以注意到数量是4
但是,您可能需要使用
**kwargs
作为一个参数(你可以用任何名字,这只是惯例;**
将所有未明确命名的关键字参数指定给dict)您还可以考虑报告不用于帮助用户查找使用错误的参数